java utf8转iso8859-1_在Java中将UTF-8转换为ISO-8859-1
小編典典
我不確定標準庫中是否有將執行此操作的規范化例程。我不認為標準的Unicode規范化程序會處理“智能”引號的轉換-
但不要引用我。
明智的做法是轉儲ISO-8859-1并開始使用UTF-8。也就是說,可以將任何通常允許的Unicode代碼點編碼為HTML網頁,編碼為ISO-8859-1。您可以使用轉義序列對它們進行編碼,如下所示:
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;。同樣,對其他兩個任意代碼點也進行了編碼。
需要謹慎使用此方法。如果您的文本需要針對HTML進行轉義,則需要在上述代碼或“與”號最終轉義之前完成。
2020-10-07
總結
以上是生活随笔為你收集整理的java utf8转iso8859-1_在Java中将UTF-8转换为ISO-8859-1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 金铲铲之战怎么设置和电脑一样(金属化学元
- 下一篇: iOS 16中的拟我表情有了哪些变化和