我如何将包含OCTL字符的字符串转换为ISO-8859-15,以使其变得不稳定。
我正在使用Java。 ty。
我正在尝试调高一个notifyix bbdd的值,我将它放在String中,但是当我看到视图时,我看到了Espa \ 321a --->并且我想看到ESPAÑA。我一直在寻找\ 321是OCTL的情况,这可能吗?
HTML OCTL十六进制CMP CHR含义
Ñ| \ 321 | = D1 | N〜| (Ñ)|大写N,波浪号
所以OCTL = \ 321 =Ñ
我尝试这样做,但对我不起作用,我做错了。
Charset charset = Charset.forName("OCTL");
CharsetDecoder decoder = charset.newDecoder();
CharsetEncoder encoder = charset.newEncoder();
try {
ByteBuffer bbuf = encoder.encode(CharBuffer.wrap(rs.getString(Constants.DES_PAIS_COM)));
ByteBuffer and then to a string.
CharBuffer cbuf = decoder.decode(bbuf);
String s = cbuf.toString();
deuteDetall.setDesPaisCom(s);
} catch (CharacterCodingException e) {
}
最佳答案
\321
是八进制的十六进制D1(3 * 64 + 2 * 8 + 1)。
String s = "...";
Pattern OCTAL = Pattern.compile("\\\\(\\d\\d\\d)");
StringBuffer sb = new StringBuffer();
byte[] b1 = new byte[1];
Matcher m = OCTAL.matcher(s);
while (m.find()) {
String replacement = m.group(): // default original
try {
b1[0] = (byte)Integer.parseInt(m.group(1), 8);
replacement = new String(b1, "ISO-8859-15");
} catch (NumberFormatException e) {
//...
}
m.appendReplacement(sb, replacement);
}
m.appendTail(sb);
s = sb.toString();