繁体   English   中英

将Unicode数据符号转换为字符串

[英]Converting unicode data symbols to Strings

我无法解决Java Unicode和编码问题。 问题是我有5,000多个字符串,例如:“ Steve O#8217Conord和Mirco Savas”和...“ Rusell O&#146Connell”,其中“#8217”和“&#146”必须替换为撇号。

但是此代码有许多不同的变体,并且apache.common.lang.StringUtils Apache库无法帮助我解决问题,因为该库的开头需要“&”字符和“;”。 在末尾。 我不能在任何地方输入这些信息,因为有超过5,000个字符串。 因此,如果可以使用正则表达式或其他方法在字符串中找到这些序列并将其替换为撇号,我将很高兴听到:)

此外,还有一些符号,例如“O’”,这是一个大问题,因为应该在UTF8中读取它们。 我的意思是(\\ u8127)和其他字符。 你有什么建议吗?

尝试这样的事情:

import java.io.FileOutputStream;
import java.io.PrintWriter;
import org.apache.commons.lang3.StringEscapeUtils;

String[] myStringPool = {"Steve O#8217Conord and Mirco Savas","Rusell O&#146Connell"};
PrintWriter pw = new PrintWriter("utf-8.txt", "UTF-8");
for(String string : myStringPool) {
    pw.println(StringEscapeUtils.unescapeXml(string.replaceAll("&?#(\\d+);?", "&#$1;")));
}
pw.close();

假设您已经可以使用这些字符串,则string.replaceAll("&?#(\\\\d+);?", "&#$1;")清除要由org.apache.commons.lang3.StringEscapeUtils取消转义的字符串中的XML实体org.apache.commons.lang3.StringEscapeUtils在此处获取),最后将字符串以UTF-8格式写入文件。

请注意,可以将Java配置为以UTF-8自动读取和写入文件。 Java应该为您的系统自动使用正确的编码。 除非您真的知道自己在做什么,否则通常以一种特定的编码方式显式写入文件通常是一个坏主意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM