栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何解析与Java编码不同的字符串

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何解析与Java编码不同的字符串

Java字符串 始终 在UTF-16中,至少就API而言......但是您通常可以将它们视为“
Unipre”。它们是UTF-16的事实仅在涉及基本多语言平面之外的字符(即Unipre值高于U + FFFF)时才真正相关。它们必须在Java中表示为
代理对 。但是我认为您不必为此担心。因此,只需将Strings中的值视为没有特定编码的“ Unipre文本” …尤其是绝对 不在
UTF-8或CP1252中。这些是用于将 二进制 数据(例如,字节数组)转换为文本数据(例如,字符串)的编码。


您不应该使用

String.getBytes()
new String(byte[])
不指定编码- 这就是 问题所在。那些总是使用平台默认编码-
这几乎 总是 错误的选择。

您说自己“已经从Word文档中读入了一个字符串”-您是如何读入的?它是如何开始生活的?

如果您有 字节, 并且知道相关的编码,则应使用:

String text = new String(bytes, encoding);

您永远不必处理使用错误编码创建的字符串-如果进入该阶段,您几乎 注定 会丢失信息。尽早解决问题,而不是稍后再尝试修复数据。

接下来的 事情要明白的是,

String
在Java类是不可变的。调用
replaceAll
字符串 不会更改现有字符串
。相反,它将返回包含已进行替换的 字符串。

所以这条语句:

projDateString2.replaceAll("x96", "u2013");

永远 做你想做的。即使其他一切正确,您也应该使用:

projDateString2 = projDateString2.replaceAll("x96", "u2013");

(或类似的内容)。我认为这实际上 不会满足您的要求,但是当您整理完所有其他内容时,您需要意识到这一点。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/483597.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号