diff --git a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/resources/SystemEditableRemoteFile.java b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/resources/SystemEditableRemoteFile.java index 10d9d21f578..769b46ed724 100644 --- a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/resources/SystemEditableRemoteFile.java +++ b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/resources/SystemEditableRemoteFile.java @@ -598,7 +598,7 @@ public class SystemEditableRemoteFile implements ISystemEditableRemoteObject, IP return false; } - subsystem.download(remoteFile, localPath, SystemEncodingUtil.ENCODING_UTF_8, monitor); + subsystem.download(remoteFile, localPath, remoteFile.getEncoding(), monitor); if (monitor.isCanceled()) { return false; @@ -1438,7 +1438,7 @@ public class SystemEditableRemoteFile implements ISystemEditableRemoteObject, IP else { if (!properties.getUsedBinaryTransfer()) { - encoding = SystemEncodingUtil.ENCODING_UTF_8; + encoding = remoteFile.getEncoding(); } } diff --git a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/resources/SystemUniversalTempFileListener.java b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/resources/SystemUniversalTempFileListener.java index fb05070d5e9..3f238f533dc 100644 --- a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/resources/SystemUniversalTempFileListener.java +++ b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/resources/SystemUniversalTempFileListener.java @@ -230,7 +230,13 @@ public class SystemUniversalTempFileListener extends SystemTempFileListener try { // upload our pending changes to the remote file - fs.upload(tempFile.getLocation().makeAbsolute().toOSString(), remoteFile, SystemEncodingUtil.ENCODING_UTF_8, monitor); + String srcEncoding = tempFile.getCharset(true); + + if (srcEncoding == null) { + srcEncoding = remoteFile.getEncoding(); + } + + fs.upload(tempFile.getLocation().makeAbsolute().toOSString(), remoteFile, srcEncoding, monitor); } catch (RemoteFileSecurityException e) diff --git a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/resources/UniversalFileTransferUtility.java b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/resources/UniversalFileTransferUtility.java index 7752861d52d..ae993967096 100644 --- a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/resources/UniversalFileTransferUtility.java +++ b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/resources/UniversalFileTransferUtility.java @@ -167,7 +167,8 @@ public class UniversalFileTransferUtility // copy remote file to workspace SystemUniversalTempFileListener listener = SystemUniversalTempFileListener.getListener(); listener.addIgnoreFile(tempFile); - srcFS.download(srcFileOrFolder, tempFile.getLocation().makeAbsolute().toOSString(), SystemEncodingUtil.ENCODING_UTF_8, monitor); + String remoteEncoding = srcFileOrFolder.getEncoding(); + srcFS.download(srcFileOrFolder, tempFile.getLocation().makeAbsolute().toOSString(), remoteEncoding, monitor); listener.removeIgnoreFile(tempFile); if (!tempFile.exists() && !tempFile.isSynchronized(IResource.DEPTH_ZERO)) { @@ -196,12 +197,12 @@ public class UniversalFileTransferUtility try { String cset = tempFile.getCharset(); - if (!cset.equals(SystemEncodingUtil.ENCODING_UTF_8)) + if (!cset.equals(remoteEncoding)) { //System.out.println("charset ="+cset); //System.out.println("tempfile ="+tempFile.getFullPath()); - tempFile.setCharset(SystemEncodingUtil.ENCODING_UTF_8, monitor); + tempFile.setCharset(remoteEncoding, monitor); } } catch (Exception e) @@ -528,7 +529,8 @@ public class UniversalFileTransferUtility // copy remote file to workspace SystemUniversalTempFileListener listener = SystemUniversalTempFileListener.getListener(); listener.addIgnoreFile(tempFile); - download(srcFileOrFolder, tempFile, SystemEncodingUtil.ENCODING_UTF_8, monitor); + String encoding = System.getProperty("file.encoding"); //$NON-NLS-1$ + download(srcFileOrFolder, tempFile, encoding, monitor); listener.removeIgnoreFile(tempFile); if (!tempFile.exists() && !tempFile.isSynchronized(IResource.DEPTH_ZERO)) { @@ -549,9 +551,9 @@ public class UniversalFileTransferUtility try { String cset = tempFile.getCharset(); - if (!cset.equals(SystemEncodingUtil.ENCODING_UTF_8)) + if (!cset.equals(encoding)) { - tempFile.setCharset(SystemEncodingUtil.ENCODING_UTF_8, monitor); + tempFile.setCharset(encoding, monitor); } } catch (Exception e) diff --git a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/resources/SystemRemoteEditManager.java b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/resources/SystemRemoteEditManager.java index a920d99b1b2..125e0cd6fdf 100644 --- a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/resources/SystemRemoteEditManager.java +++ b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/internal/files/ui/resources/SystemRemoteEditManager.java @@ -313,7 +313,7 @@ public class SystemRemoteEditManager description.setNatureIds(newNatures); editProject.setDescription(description, null); - editProject.setDefaultCharset(SystemEncodingUtil.ENCODING_UTF_8, new NullProgressMonitor()); + // editProject.setDefaultCharset(SystemEncodingUtil.ENCODING_UTF_8, new NullProgressMonitor()); // add java support diff --git a/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/internal/services/local/files/LocalFileService.java b/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/internal/services/local/files/LocalFileService.java index cdb9669172a..2d8526746ee 100644 --- a/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/internal/services/local/files/LocalFileService.java +++ b/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/internal/services/local/files/LocalFileService.java @@ -597,11 +597,13 @@ public class LocalFileService extends AbstractFileService implements IFileServic destinationFile.setLastModified(localFile.lastModified()); //TODO check if we want to preserve permissions //if(!localFile.canWrite()) destinationFile.setReadOnly(); - if (destinationFile.length() != localFile.length()) { + + // File lengths can be different if the encodings are different +/* if (destinationFile.length() != localFile.length()) { // throw new RemoteFileCancelledException(); System.err.println("local.upload: size mismach on "+destinationFile.getAbsolutePath()); //$NON-NLS-1$ return false; - } + }*/ } } catch (IOException e) diff --git a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/FileServiceSubSystem.java b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/FileServiceSubSystem.java index e01c80f2e23..155ece98de4 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/FileServiceSubSystem.java +++ b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/FileServiceSubSystem.java @@ -68,7 +68,7 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I protected IRemoteFile _userHome; - + public FileServiceSubSystem(IHost host, IConnectorService connectorService, IFileService hostFileService, IHostFileToRemoteFileAdapter fileAdapter, ISearchService searchService) { @@ -454,7 +454,7 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I File localFile = new File(localpath); try { - getFileService().download(monitor, parentPath, file.getName(), localFile, isBinary(file), encoding); + getFileService().download(monitor, parentPath, file.getName(), localFile, isBinary(file), file.getEncoding()); } catch (SystemMessageException e) { @@ -533,7 +533,7 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I { String remoteParentPath = destination.getParentPath(); String remoteFileName = destination.getName(); - String hostEncoding = getRemoteEncoding(); // default host encoding + String hostEncoding = destination.getEncoding(); boolean isBinary = isBinary(encoding, hostEncoding, destination.getAbsolutePath()); if (!destination.canWrite())