编码何时与 Java 相关?
When is encoding being relevant in Java?
这可能是一个有点新手的问题,但考虑到 Java 中的调试编码,它是相当相关的:什么时候编码与 String 对象相关?
假设我有一个要保存到文件的字符串对象。字符串对象本身是否使用我应该操作的某种编码,或者这种编码只会在我创建要保存的字节流时通知?
这同样适用于导入:当我打开一个文件并获取它的字节时,我假设手边没有编码,只有字节。当我将这些字节解析为字符串时,我必须使用编码来了解它们是什么字符。 在我解析这些字节后,字符串(在内存中)有某种带有编码的元信息,或者这只是由 JVM 处理?
考虑到我遇到文件 import/export 问题,这一点很重要,我明白了我应该在什么时候担心获得正确的编码。
希望我解释清楚我的疑惑,先谢谢了!
Java 字符串没有明确的编码信息。他们不知道自己从哪里来,也不知道要去哪里。所有 Java 字符串都在内部存储为 UTF-16。
您(可选)指定要将字符串转换为字节序列(例如,保存到文件)或转换字节序列(例如,读取从一个文件)转换成一个字符串。
当您 de/serializing 来自磁盘或网络时,编码对字符串很重要。文本文件格式有多种:ascii、latin-1、utf-8/16(我相信可能有两种utf-16格式,但我不是100%)
请参阅 InputStreamReader
了解如何从以非默认格式编码的文本中加载字符串
这可能是一个有点新手的问题,但考虑到 Java 中的调试编码,它是相当相关的:什么时候编码与 String 对象相关?
假设我有一个要保存到文件的字符串对象。字符串对象本身是否使用我应该操作的某种编码,或者这种编码只会在我创建要保存的字节流时通知?
这同样适用于导入:当我打开一个文件并获取它的字节时,我假设手边没有编码,只有字节。当我将这些字节解析为字符串时,我必须使用编码来了解它们是什么字符。 在我解析这些字节后,字符串(在内存中)有某种带有编码的元信息,或者这只是由 JVM 处理?
考虑到我遇到文件 import/export 问题,这一点很重要,我明白了我应该在什么时候担心获得正确的编码。
希望我解释清楚我的疑惑,先谢谢了!
Java 字符串没有明确的编码信息。他们不知道自己从哪里来,也不知道要去哪里。所有 Java 字符串都在内部存储为 UTF-16。
您(可选)指定要将字符串转换为字节序列(例如,保存到文件)或转换字节序列(例如,读取从一个文件)转换成一个字符串。
当您 de/serializing 来自磁盘或网络时,编码对字符串很重要。文本文件格式有多种:ascii、latin-1、utf-8/16(我相信可能有两种utf-16格式,但我不是100%)
请参阅 InputStreamReader
了解如何从以非默认格式编码的文本中加载字符串