首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UTF-8 -- ISO 8859-1绘图工具

UTF-8 -- ISO 8859-1绘图工具
EN

Stack Overflow用户
提问于 2013-05-15 14:55:14
回答 1查看 1.6K关注 0票数 3

当我用8859-1中不知道的字符将UTF-8字符串转换为8859-1时,这里和那里都有问号。当然他还能做什么!

是否有一个java工具可以将像"İKEA“这样的字符串映射到”宜家“并避免?充分利用它?

EN

回答 1

Stack Overflow用户

发布于 2013-05-16 15:24:32

对于具体的例子,您可以:

  • 用Unicode 归一化的兼容性分解字母和符号
  • 指示编码器删除不受支持的字符(指示符)

示例:

代码语言:javascript
复制
ByteArrayOutputStream out = new ByteArrayOutputStream();
// create encoder
CharsetEncoder encoder = StandardCharsets.ISO_8859_1.newEncoder();
encoder.onUnmappableCharacter(CodingErrorAction.IGNORE);
// write data
String ikea = "\u0130KEA";
String decomposed = Normalizer.normalize(ikea, Form.NFKD);
CharBuffer cbuf = CharBuffer.wrap(decomposed);
ByteBuffer bbuf = encoder.encode(cbuf);
out.write(bbuf.array());
// verify
String decoded = new String(out.toByteArray(), StandardCharsets.ISO_8859_1);
System.out.println(decoded);

您仍在将定义109,384个值(Unicode 6)的字符集转换为支持256的字符集,因此始终存在限制。

还可以考虑一个更复杂的转换API,比如ICU,用于像音译这样的特性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16568399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档