Java 平台默认字符编码如何影响跨平台性能
我读到过使用平台默认字符编码的坏主意,例如在读取文本文件并将文本导入数组等时。您能否解释一下这会如何影响跨平台性能,以及如何克服该问题?是否存在应用于跨平台应用程序的编码?谢谢如果读写文件不在平台之间交换,通常不会有问题。但是,如果您有一个在windows上创建的配置文件(Win1252,类似于ISO8859-1编码),然后在最近的linux上启动您的应用程序(UTF-8编码),那么该配置文件几乎所有127以上的字符(如德语Umlautsä、ö、ü或欧元符号或类似字符)都会出现问题Java 平台默认字符编码如何影响跨平台性能,java,performance,character-encoding,Java,Performance,Character Encoding,我读到过使用平台默认字符编码的坏主意,例如在读取文本文件并将文本导入数组等时。您能否解释一下这会如何影响跨平台性能,以及如何克服该问题?是否存在应用于跨平台应用程序的编码?谢谢如果读写文件不在平台之间交换,通常不会有问题。但是,如果您有一个在windows上创建的配置文件(Win1252,类似于ISO8859-1编码),然后在最近的linux上启动您的应用程序(UTF-8编码),那么该配置文件几乎所有127以上的字符(如德语Umlautsä、ö、ü或欧元符号或类似字符)都会出现问题 在这种情况下
在这种情况下,只需指定始终使用其中一种编码,并坚持使用。如果只使用纯ASCII(非拉丁扩展!)文件,到目前为止不会出现问题。这与性能无关,而是与显示和读取正确编码的文本有关。有很多方法可以解决这个问题:
- 设置JVM选项
-Dfile.encoding=utf-8
- 始终使用带有字符编码参数的重载方法。这些是
、字符串
、读卡器
等等写卡器
另请参见。对于某些多语言安装,默认编码因操作系统而异,甚至在同一台机器上的用户之间也不相同。这意味着应用程序写入的字符数据将发生变化,如果使用不同的默认编码读取,则无法读取/显示损坏。欧元字符(€)将在windows-1252下编码为字节
80
,在ISO-8859-15下编码为A4
,在UTF-8下编码为E2 82 AC
传统编码可能会导致错误,因为其中许多编码只支持很窄的代码点范围
更改默认编码的方法是在操作系统中更改它
一般来说,在选择编码时最好是明确的,并且更喜欢无损Unicode编码(通常是UTF-8)。例如,在支持Windows 95时,将编码设置为Windows默认编码的决定更有意义。如果只使用纯ASCII(非拉丁扩展!)文件,到目前为止不会出现问题。-除非您在z/OSOh上运行代码,否则这很有趣。它们的默认编码是什么?:)