Java处理国际文件。编码材料

Java处理国际文件。编码材料,java,swing,encoding,localization,Java,Swing,Encoding,Localization,我正在编写一个示例测试应用程序,它的主要功能是修改一些文本文件(不管是什么样的修改)。这些测试文件通常是txt格式的。问题是,这些文件可能包含英语、德语、波兰语、汉语、阿拉伯语等文本 我的问题是,在编码方面我应该注意什么。我想确保,该应用程序适用于它遇到的任何字符 你能给我一些关于这些编码的有用链接吗(当读/写文件时) 我正在用Java编写这个应用程序 我想确保,该应用程序适用于它遇到的任何字符 那很好,只要你知道文件的编码。需要注意的是,文件的编码与文件中文本的语言非常不同。例如,完全相同的字

我正在编写一个示例测试应用程序,它的主要功能是修改一些文本文件(不管是什么样的修改)。这些测试文件通常是txt格式的。问题是,这些文件可能包含英语、德语、波兰语、汉语、阿拉伯语等文本

我的问题是,在编码方面我应该注意什么。我想确保,该应用程序适用于它遇到的任何字符

你能给我一些关于这些编码的有用链接吗(当读/写文件时)

我正在用Java编写这个应用程序

我想确保,该应用程序适用于它遇到的任何字符

那很好,只要你知道文件的编码。需要注意的是,文件的编码与文件中文本的语言非常不同。例如,完全相同的字符可以用UTF-8和UTF-16表示

可以试探性地猜测文件的编码,但是(IMO)最好要求所有输入文件使用相同的编码,如果您可以控制的话。。。或者允许用户指定编码。如果你能控制编码,我通常推荐UTF-8

我想确保,该应用程序适用于它遇到的任何字符

那很好,只要你知道文件的编码。需要注意的是,文件的编码与文件中文本的语言非常不同。例如,完全相同的字符可以用UTF-8和UTF-16表示


可以试探性地猜测文件的编码,但是(IMO)最好要求所有输入文件使用相同的编码,如果您可以控制的话。。。或者允许用户指定编码。如果你能控制编码,我通常推荐UTF-8。

如果你能控制它,你就需要UTF-8。但这不仅仅是一个可以翻转的开关——Java喜欢平台默认编码和UTF-8上几乎所有地方的古老8位编码

什么时候需要使用编码

它可以归结为内存中任何需要编码的字符串(例如打印到控制台、写入文件或发送数据库查询时)和内存中任何需要解码的字符串(例如读取控制台、文件、http请求、接收数据库结果时)

如果在这些情况下没有指定编码,则隐式使用编码。总是。隐式选择的编码通常不是您想要的,甚至会根据程序运行的位置而改变


Java几乎对任何东西都有隐式编码重载是没有帮助的,而且它似乎总是更容易使用。

如果你能控制它,你需要UTF-8。但这不仅仅是一个可以翻转的开关——Java喜欢平台默认编码和UTF-8上几乎所有地方的古老8位编码

什么时候需要使用编码

它可以归结为内存中任何需要编码的字符串(例如打印到控制台、写入文件或发送数据库查询时)和内存中任何需要解码的字符串(例如读取控制台、文件、http请求、接收数据库结果时)

如果在这些情况下没有指定编码,则隐式使用编码。总是。隐式选择的编码通常不是您想要的,甚至会根据程序运行的位置而改变


Java几乎对任何东西都有隐式编码重载,这并没有帮助,而且它似乎总是更容易使用。

每次读/写一行文件时,我都需要使用正确的编码。该程序用于编辑电影字幕。尽管事实上,大多数行都是英文的,但一些异国情调(例如中文)的字符串经常出现。@guitar\u freak字幕文件通常是纯文本文件,这意味着它采用单字符编码。在这种情况下,每行的编码并不不同,所有内容都是单一编码。UTF-8可以处理任何语言。问题是,如果您的程序必须编辑可能来自任何地方的字幕文件,您实际上无法控制编码。必须告诉您文件的编码或检测它()。每次读/写一行文件时,我都需要使用正确的编码。该程序用于编辑电影字幕。尽管事实上,大多数行都是英文的,但一些异国情调(例如中文)的字符串经常出现。@guitar\u freak字幕文件通常是纯文本文件,这意味着它采用单字符编码。在这种情况下,每行的编码并不不同,所有内容都是单一编码。UTF-8可以处理任何语言。问题是,如果您的程序必须编辑可能来自任何地方的字幕文件,您实际上无法控制编码。您必须被告知文件的编码或检测它()。始终;我在博客上发表了一篇关于实用性的文章。谢谢,真的很有用!始终;我在博客上发表了一篇关于实用性的文章。谢谢,真的很有用!