这可能是一个初学者的问题,但考虑到Java中的debbuging编码,它是相当相关的:在什么时候编码与String对象相关?
考虑我有一个我想保存到文件的String对象。 String对象本身是否使用了我应该操作的某种编码,或者只有当我创建要保存的字节流时才会通知我?
同样适用于导入:当我打开文件并获取它的字节时,我假设手头没有编码,只有字节。当我将这个字节解析为String时,我必须使用编码来理解它们是什么字符。 解析那些字节后,String(在内存中)有一些带有编码的元信息,或者只是由JVM处理?
考虑到我遇到文件导入/导出问题,这是至关重要的,我明白了我应该担心获得正确的编码。
希望我很好地解释了我的疑问,并提前感谢你!
答案 0 :(得分:3)
Java字符串没有明确的编码信息。他们不知道他们来自哪里,也不知道他们要去哪里。所有Java字符串都在内部存储为UTF-16。
您(可选)指定在将String转换为字节序列(例如,保存到文件)时,或者当您想要转换字节序列时使用的编码(例如,从文件)到一个字符串。
答案 1 :(得分:1)
当您从磁盘或Web进行序列化时,编码对String非常重要。有多种文本文件格式:ascii,latin-1,utf-8/16(我相信可能有两种utf-16格式,但我不是100%)
有关如何从以非默认格式编码的文本加载字符串
,请参阅InputStreamReader