Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 平台默认字符编码如何影响跨平台性能_Java_Performance_Character Encoding - Fatal编程技术网

Java 平台默认字符编码如何影响跨平台性能

Java 平台默认字符编码如何影响跨平台性能,java,performance,character-encoding,Java,Performance,Character Encoding,我读到过使用平台默认字符编码的坏主意,例如在读取文本文件并将文本导入数组等时。您能否解释一下这会如何影响跨平台性能,以及如何克服该问题?是否存在应用于跨平台应用程序的编码?谢谢如果读写文件不在平台之间交换,通常不会有问题。但是,如果您有一个在windows上创建的配置文件(Win1252,类似于ISO8859-1编码),然后在最近的linux上启动您的应用程序(UTF-8编码),那么该配置文件几乎所有127以上的字符(如德语Umlautsä、ö、ü或欧元符号或类似字符)都会出现问题 在这种情况下

我读到过使用平台默认字符编码的坏主意,例如在读取文本文件并将文本导入数组等时。您能否解释一下这会如何影响跨平台性能,以及如何克服该问题?是否存在应用于跨平台应用程序的编码?谢谢

如果读写文件不在平台之间交换,通常不会有问题。但是,如果您有一个在windows上创建的配置文件(Win1252,类似于ISO8859-1编码),然后在最近的linux上启动您的应用程序(UTF-8编码),那么该配置文件几乎所有127以上的字符(如德语Umlautsä、ö、ü或欧元符号或类似字符)都会出现问题


在这种情况下,只需指定始终使用其中一种编码,并坚持使用。如果只使用纯ASCII(非拉丁扩展!)文件,到目前为止不会出现问题。

这与性能无关,而是与显示和读取正确编码的文本有关。有很多方法可以解决这个问题:

  • 设置JVM选项
    -Dfile.encoding=utf-8
  • 始终使用带有字符编码参数的重载方法。这些是
    字符串
    读卡器
    写卡器
    等等
我认为后者是必须的。如果您总是设置jvm选项,它会工作,但是如果您忘记在某个时候设置它,那么在随机的地方会出现意外的故障

还有一个问题——坚持UTF-8


另请参见。

对于某些多语言安装,默认编码因操作系统而异,甚至在同一台机器上的用户之间也不相同。这意味着应用程序写入的字符数据将发生变化,如果使用不同的默认编码读取,则无法读取/显示损坏。欧元字符(€)将在windows-1252下编码为字节
80
,在ISO-8859-15下编码为
A4
,在UTF-8下编码为
E2 82 AC

传统编码可能会导致错误,因为其中许多编码只支持很窄的代码点范围

更改默认编码的方法是在操作系统中更改它


一般来说,在选择编码时最好是明确的,并且更喜欢无损Unicode编码(通常是UTF-8)。例如,在支持Windows 95时,将编码设置为Windows默认编码的决定更有意义。

如果只使用纯ASCII(非拉丁扩展!)文件,到目前为止不会出现问题。-除非您在z/OSOh上运行代码,否则这很有趣。它们的默认编码是什么?:)