gpt4 book ai didi

java - 将包含 ISO 8859-1 十六进制字符代码的字符串转换为 UTF-8 java

转载 作者:行者123 更新时间:2023-12-02 09:41:39 26 4
gpt4 key购买 nike

我有一个字符串,我相信它包含一些 ISO-8859-1 十六进制字符代码

String doc = "#xC1;o thun b#xE9; g#xE1;i c#x1ED9;t d#xE2;y xanh bi#x1EC3;n"

我想把它改成这样,

Áo thun bé gái cột dây xanh biển

我尝试过这个方法,但没有成功

byte[] isoBytes = doc.getBytes("ISO-8859-1");
System.out.println(new String(isoBytes, "UTF-8"));

正确的转换方法是什么?非常感谢您的帮助!

最佳答案

假设 #nnnn; 序列是普通的旧式 Unicode 字符表示形式,我建议采用以下方法。

class Cvt {

static String convert(String in) {
String str = in;
int curPos = 0;
while (curPos < str.length()) {
int j = str.indexOf("#x", curPos);
if (j < 0) // no more #x
curPos = str.length();
else {
int k = str.indexOf(';', curPos + 2);
if (k < 0) // unterminated #x
curPos = str.length();
else { // convert #xNNNN;
int n = Integer.parseInt(str.substring(j+2, k), 16);
char[] ch = { (char)n };
str = str.substring(0, j) + new String(ch) + str.substring(k+1);
curPos = j + 1; // after ch
}
}
}
return str;
}

static public void main(String... args) {
String doc = "#xC1;o thun b#xE9; g#xE1;i c#x1ED9;t d#xE2;y xanh bi#x1EC3;n";
System.out.println(convert(doc));
}

}

这与前面的答案的方法非常相似,除了假设字符是 Unicode 代码点而不是 8859-1 代码点。

输出是

Áo thun bé gái cột dây xanh biển

关于java - 将包含 ISO 8859-1 十六进制字符代码的字符串转换为 UTF-8 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57022122/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com