什么时候编码与Java相关?

时间:2015-09-25 18:11:18

标签: java encoding iso utf

这可能是一个初学者的问题,但考虑到Java中的debbuging编码,它是相当相关的:在什么时候编码与String对象相关?

考虑我有一个我想保存到文件的String对象。 String对象本身是否使用了我应该操作的某种编码,或者只有当我创建要保存的字节流时才会通知我

同样适用于导入:当我打开文件并获取它的字节时,我假设手头没有编码,只有字节。当我将这个字节解析为String时,我必须使用编码来理解它们是什么字符。 解析那些字节后,String(在内存中)有一些带有编码的元信息,或者只是由JVM处理?

考虑到我遇到文件导入/导出问题,这是至关重要的,我明白了我应该担心获得正确的编码。

希望我很好地解释了我的疑问,并提前感谢你!

2 个答案:

答案 0 :(得分:3)

Java字符串没有明确的编码信息。他们不知道他们来自哪里,也不知道他们要去哪里。所有Java字符串都在内部存储为UTF-16。

您(可选)指定在将String转换为字节序列(例如,保存到文件)时,或者当您想要转换字节序列时使用的编码(例如,从文件)到一个字符串。

答案 1 :(得分:1)

当您从磁盘或Web进行序列化时,编码对String非常重要。有多种文本文件格式:ascii,latin-1,utf-8/16(我相信可能有两种utf-16格式,但我不是100%)

有关如何从以非默认格式编码的文本加载字符串

,请参阅InputStreamReader