栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Java中将UTF-8转换为ISO-8859-1

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Java中将UTF-8转换为ISO-8859-1

我不确定标准库中是否有将执行此操作的规范化例程。我不认为标准的Unipre规范化程序会处理“智能”引号的转换-
但不要引用我。

明智的做法是转储ISO-8859-1并开始使用

UTF-8
。也就是说,可以将任何通常允许的Unipre代码点编码为HTML网页,编码为
ISO-8859-1
。您可以使用转义序列对它们进行编码,如下所示:

public final class HtmlEnprer {  private HtmlEnprer() {}  public static <T extends Appendable> 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.UnipreBlock.of(ch) == Character.UnipreBlock.BASIC_LATIN) {        out.append(ch);      } else {        int prepoint = Character.prePointAt(sequence, i);        // handle supplementary range chars        i += Character.charCount(prepoint) - 1;        // emit entity        out.append("&#x");        out.append(Integer.toHexString(prepoint));        out.append(";");      }    }    return out;  }}

用法示例:

String foo = "This is Cyrillic Ya: u044Fn"    + "This is fraktur G: uD835uDD0An" + "This is a smart quote: u201C";StringBuilder sb = HtmlEnprer.escapeNonLatin(foo, new StringBuilder());System.out.println(sb.toString());

上面的字符左双引号(

U+201C
)被编码为&#x201C;。同样,对其他两个任意代码点也进行了编码。

需要谨慎使用此方法。如果您的文本需要针对HTML进行转义,则需要在上述代码或“与”号最终转义之前完成。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437934.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号