如何指定与基础Windows代码页一致的Java file.encoding值?
发布时间:2020-12-13 20:32:10 所属栏目:Windows 来源:网络整理
导读:我有一个Java应用程序,它使用InputStreamReader通过套接字接收数据.它从getEncoding方法报告“Cp1252”: /* java.net. */ Socket Sock = ...;InputStreamReader is = new InputStreamReader(Sock.getInputStream());System.out.println("Character encoding
我有一个Java应用程序,它使用InputStreamReader通过套接字接收数据.它从getEncoding方法报告“Cp1252”:
/* java.net. */ Socket Sock = ...; InputStreamReader is = new InputStreamReader(Sock.getInputStream()); System.out.println("Character encoding = " + is.getEncoding()); // Prints "Character encoding = Cp1252" 这不一定与系统报告的代码页相匹配.例如: C:&;chcp Active code page: 850 应用程序可以接收字节0x81,其在代码页850中表示字符ü.程序用代码页1252解释该字节,该代码页没有定义该值的任何字符,所以我得到一个问号. 通过在启动应用程序的批处理文件中添加另一个命令行选项,我能够为使用代码页850的一个客户解决此问题: java.exe -Dfile.encoding=Cp850 ... 但当然,并非所有客户都使用代码页850.如何让Java使用与底层Windows系统兼容的代码页?我的偏好是我可以放在批处理文件中,保持Java代码不变: ENC=... java.exe -Dfile.encoding=%ENC% ...
cmd.exe使用的默认编码是Cp850(或者操作系统本机的“OEM”CP);系统编码是Cp1252(或任何“ANSI”CP是OS本机的).
Gory details here.发现控制台编码的一种方法是执行
via native code(有关当前控制台编码,请参阅
GetConsoleOutputCP;有关默认“ANSI”编码,请参阅
GetACP;
etc.).
通过-D开关更改编码将影响所有默认编码机制,包括重定向的stdout / stdin / stderr.这不是一个理想的解决方案. 我想出了这个可以将控制台设置为系统ANSI代码页的WSH脚本,但是还没弄清楚如何以编程方式切换到TrueType字体. 'file: setacp.vbs 'usage: cscript /Nologo setacp.vbs Set objShell = CreateObject("WScript.Shell") 'replace ACP (ANSI) with OEMCP for default console CP cp = objShell.RegRead("HKEY_LOCAL_MACHINESYSTEMControlSet001" &_ "ControlNlsCodePageACP") WScript.Echo "Switching console code page to " & cp objShell.Exec "chcp.com " & cp (这是我的第一个WSH脚本,因此它可能存在缺陷 – 我不熟悉注册表读取权限.) 使用TrueType字体是使用ANSI / Unicode和cmd.exe的另一个要求.在时间允许的情况下,我将看一个程序切换到更好的字体. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- Windows上的缓冲区溢出攻击导致访问冲突
- Windows-8 – 未调用Metro / WinRT UI异步void事
- windows – 我在哪里保存我的Haskell“模块”?
- 如何在Windows 7 64位上安装ROracle
- windows-server-2008 – 在少数六个用户/计算机的
- 在Windows上使用TortoiseSVN更改文件名大小写
- Windows服务 – ServiceController似乎无法停止服
- windows-xp – 嵌入式Windows XP
- 在Windows C/C++中使用半字节(4位变量)
- 紧凑框架 – 什么是在Compact Framework上开发时
热点阅读