首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编码cp1252

编码cp1252
EN

Stack Overflow用户
提问于 2009-12-01 23:03:47
回答 5查看 27.8K关注 0票数 8

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

System.out.println(System.getProperty("file.encoding"));

我将cp1252作为编码。

有没有办法知道这个值来自哪里?(比如环境变量或其他东西)

我想在命令提示符上使用一些命令打印编码的值,比如Windows XP上的systeminfo。

EN

回答 5

Stack Overflow用户

发布于 2009-12-01 23:39:55

cp1252是MS Windows英文安装的默认编码(微软称之为ANSI)。缺省情况下,Java将采用系统区域设置作为其缺省字符编码。这意味着什么取决于系统。一般来说,我不喜欢依赖默认编码。如果我知道我的文本将是纯ASCII码,我会忽略它-否则,我会在实例化InputStreamReaderOutputStreamWriterString等或调用getBytes时显式设置编码。

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

票数 7
EN

Stack Overflow用户

发布于 2009-12-01 23:07:50

至少在Windows上,该值是用于非Unicode文本的旧代码页。当您使用旧的ANSI时,它是操作系统在字符串和字符串之间进行转换的地方。对于任何较新的程序,它应该没有任何影响(也就是说,我仍然看到足够多的程序使用API函数的A而不是W变体,遗憾的是)。

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

然而,对于命令提示符来说,这种编码没有什么意义,因为控制台默认情况下使用OEM编码,它模仿DOS的年龄之一(850或437是很常见的)。

票数 4
EN

Stack Overflow用户

发布于 2009-12-01 23:51:04

由于这实际上与Java没有任何关系,您可以直接选择使用WSH脚本:

代码语言:javascript
复制
' 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

另请参阅chcp命令;您可能想要在Windows命令提示符(some links in this blog post)上阅读有关编码的工作原理。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1826771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档