Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.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 编码cp1252_Java_Windows_Encoding_Cp1252 - Fatal编程技术网

Java 编码cp1252

Java 编码cp1252,java,windows,encoding,cp1252,Java,Windows,Encoding,Cp1252,当我在Java中尝试以下操作时: System.out.println(System.getProperty(“file.encoding”) 我得到cp1252作为编码 有没有办法知道这个值是从哪里来的?(比如环境变量之类的) 我想在Windows XP上使用诸如systeminfo之类的命令在命令提示符下打印编码值。我认为此编码是由JVM设置的,因此从外部检索它没有意义。该值至少在Windows上是用于非Unicode文本的传统代码页。当您使用旧的ANSI API时,操作系统会将字符串转换成

当我在Java中尝试以下操作时:

System.out.println(System.getProperty(“file.encoding”)

我得到
cp1252
作为编码

有没有办法知道这个值是从哪里来的?(比如环境变量之类的)


我想在Windows XP上使用诸如systeminfo之类的命令在命令提示符下打印编码值。

我认为此编码是由JVM设置的,因此从外部检索它没有意义。

该值至少在Windows上是用于非Unicode文本的传统代码页。当您使用旧的ANSI API时,操作系统会将字符串转换成字符串。对于任何较新的程序,它都应该没有任何效果(尽管如此,我仍然看到足够多的程序使用A而不是W的API函数变体,很遗憾)

对于Java程序来说,这些都不重要,因为Java只使用Unicode。但是,如果您想在系统的代码页中写入或读取文本文件,则需要它


但是,对于命令提示符,该编码没有重要价值,因为控制台默认使用OEM编码,该编码模仿DOS时代(850或437非常常见)。

cp1252是英文版MS Windows安装的默认编码(Microsoft称之为ANSI)。默认情况下,Java将使用系统语言环境作为其默认字符编码。这意味着依赖于系统。一般来说,我不喜欢依赖默认编码。如果我知道我的文本将是纯ASCII,我将忽略它-否则我在实例化
InputStreamReader
OutputStreamWriter
String
等或调用
getBytes
时会显式设置编码


请注意,cp1252不是Windows命令提示符上的默认编码。这是更旧的cp437,您可以使用
chcp
命令查看(并更改)它。

由于这与Java没有任何关系,您可以选择使用脚本:


另请参见
chcp
命令;您可能想了解Windows命令提示符()上的编码工作原理。

据我所知,这是java源文件的编码,一旦更改其文本文件编码,您的输出将更改。 在eclipse上,从Resource属性更改它(Alt+Enter或右键单击该文件,转到Resource)。
将文本文件编码从cp1252更改为其他格式,例如UTF-8,woo。。。您的输出将不再是cp1252

不,不是,这是命令行工具的Windows编码Skico:不是,不是。命令行上使用的代码页是另一个。可能相关信息仅供参考,在widows代码页1252上有一些信息
' save this script as printANSI.vbs
' usage: cscript /Nologo printANSI.vbs
Set objShell = CreateObject("WScript.Shell")
cp = objShell.RegRead("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001" &_
                              "\Control\Nls\CodePage\ACP")
WScript.Echo cp