java - 字符串特殊字符
问题描述
我正在尝试正确评估此字符串:
String s4 = "Entraîneur";
String s4a = new String(s4.getBytes("iso-8859-1"));
运行时的值为:
Entra�®neur
不能理解
谢谢
解决方案
您正在使用一种编码创建一个字符串(默认的,很可能是 UTF-8,除非您另有指定),然后用另一种不兼容的编码 (ISO 8859-1) 将其读回。这几乎总是会对任何非 ansii 字符产生问题,因为不同的编码用不同的字节序列表示这些字符。
如果你想要一个(糟糕的)类比,这有点像打印出一些拉丁语,然后将其传递给只会说英语的人并询问它的含义。你也许可以解决其中的一些问题,但其中的其他部分将成为无稽之谈。
如果您更改代码以使用默认字符集:
String s4 = "Entraîneur";
String s4a = new String(s4.getBytes(Charset.defaultCharset()));
...那么s4a
应该包含正确的值。
推荐阅读
- python - 从连接对象的条目属性中提取的数据类型单个元素在python中代表什么?
- datagridview - 拖放和光标图像更改代码中的错误需要 C# 帮助
- python - TypeError:“numpy.ndarray”对象不可调用我该怎么办?
- r - R 中与我的代码不匹配的意外符号错误
- r - ggplot2 填充未正确转换 ggplotly 颜色映射
- java - 如何在java中洗牌一个哈希表
- python - 使用虚拟环境文件夹在pycharm上运行开源代码
- c - 使用较大数组初始化字符数组时的行为
- qt - QML TreeView - 更改展开图标的位置
- hibernate - Spring 应用程序中的 Hibernate Envers 性能和事务管理