java utf8转iso8859-1_在Java中将UTF-8转换为ISO-8859-1
小編典典
我不確定標(biāo)準(zhǔn)庫中是否有將執(zhí)行此操作的規(guī)范化例程。我不認(rèn)為標(biāo)準(zhǔn)的Unicode規(guī)范化程序會處理“智能”引號的轉(zhuǎn)換-
但不要引用我。
明智的做法是轉(zhuǎn)儲ISO-8859-1并開始使用UTF-8。也就是說,可以將任何通常允許的Unicode代碼點(diǎn)編碼為HTML網(wǎng)頁,編碼為ISO-8859-1。您可以使用轉(zhuǎn)義序列對它們進(jìn)行編碼,如下所示:
public final class HtmlEncoder {
private HtmlEncoder() {}
public static T escapeNonLatin(CharSequence sequence,
T out) throws java.io.IOException {
for (int i = 0; i < sequence.length(); i++) {
char ch = sequence.charAt(i);
if (Character.UnicodeBlock.of(ch) == Character.UnicodeBlock.BASIC_LATIN) {
out.append(ch);
} else {
int codepoint = Character.codePointAt(sequence, i);
// handle supplementary range chars
i += Character.charCount(codepoint) - 1;
// emit entity
out.append("");
out.append(Integer.toHexString(codepoint));
out.append(";");
}
}
return out;
}
}
用法示例:
String foo = "This is Cyrillic Ya: \u044F\n"
+ "This is fraktur G: \uD835\uDD0A\n" + "This is a smart quote: \u201C";
StringBuilder sb = HtmlEncoder.escapeNonLatin(foo, new StringBuilder());
System.out.println(sb.toString());
上面的字符左雙引號(U+201C “ )被編碼為&#x201C;。同樣,對其他兩個任意代碼點(diǎn)也進(jìn)行了編碼。
需要謹(jǐn)慎使用此方法。如果您的文本需要針對HTML進(jìn)行轉(zhuǎn)義,則需要在上述代碼或“與”號最終轉(zhuǎn)義之前完成。
2020-10-07
總結(jié)
以上是生活随笔為你收集整理的java utf8转iso8859-1_在Java中将UTF-8转换为ISO-8859-1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 金铲铲之战怎么设置和电脑一样(金属化学元
- 下一篇: java 正则表达式 替换括号,Java