【发布时间】:2018-09-14 04:08:19
【问题描述】:
我正在使用 UTF-8 编码将字节数组转换为字符串
new String(bytearray, StandardCharsets.UTF_8));
它将字符串Impresión 更改为Impresi�n。但是如果我执行下面的代码
new String(bytearray);
它将正确的字符串Impresión 提供给Impresión
我想在不将任何非英文字符更改为无效字符的情况下制作 UTF-8 编码字符串。
任何帮助将不胜感激。
【问题讨论】:
-
docs.oracle.com/javase/8/docs/api/java/lang/… - “通过使用平台的默认字符集解码指定的字节数组来构造一个新的字符串。”您的平台默认字符集可能不是 UTF-8(例如 Windows)。如果您的字符串在您平台的默认字符集中,而不是 UTF-8,那么这种行为是可以理解的。
-
你确定
Impresi�n不只是输出你的stings 的shell 的产物吗?前段时间我在使用 mysql 和 bash 时遇到过这样的幻影问题。 -
@luksch 我确定它不是来自 shell 输出...
-
� 是对您指定的编码无效的字节的替换字符。在这种情况下,它确实对您有所帮助(尽管 IMO 例外会更好)。 � 向您的用户表明您对他们的数据处理不当并丢失了一些数据。那么,
bytearray中文本的字符编码是什么? -
嗨@TomBlodget。这是西班牙语文本,我正在尝试从字节数组转换为字符串。使用 UTF_8 时,会产生无效字符。
标签: java arrays string encoding utf-8