wil*_*ood 0 java character-encoding
我写了一个小应用程序,它做一些文本操作并将输出写入文件(html,csv,docx,xml),这一切似乎在Mac OS X上正常工作.但在Windows上,我似乎得到字符编码问题而且很多'''似乎消失了,并被一些奇怪的东西所取代.通常是在一对中关闭'''.
我使用FreeMarker来创建输出文件,并且有一个byte []数组,在一种情况下还有一个ByteArrayStream,用于读取模板和写入输出.我认为这是一个字符编码问题,所以如果有人可以给我建议或指出一些'最佳实践'资源来处理java中的字符编码.
谢谢
实际上只有一个最佳实践:要注意字符串和字节是两个根本不同的东西,每当你在它们之间进行转换时,你使用的是字符编码(隐式或显式),你需要注意.
Java API中典型的问题点是:
new String(byte[])String.getBytes()FileReader, FileWriter所有这些都隐含地使用平台默认编码,这取决于操作系统和用户的语言环境设置.通常,最好避免这种情况,并在上述情况下明确声明编码(遗憾的是,FileReader/Writer不允许,因此您必须使用InputStreamReader/Writer).
但是,引号的问题和模板引擎的使用可能有一个更简单的解释.你用什么程序来编写模板?这听起来像是插入"智能引号",它是Windows特定的cp1251编码的一部分,但在更全局的ISO-8859-1编码中不存在.
您可能需要做的是了解保存模板的编码,并配置模板引擎以在读取模板时使用该编码.还要注意一些texxt文件,特别是XML,在头文件中显式声明编码,如果该头文件与文件使用的实际编码不一致,那么你将不可避免地遇到问题.
| 归档时间: |
|
| 查看次数: |
3326 次 |
| 最近记录: |