2011-08-16 100 views
3

我试图编码具有不受目标编码支持的字符的字符串(CP 1047)。将Unicode字符自动映射到类似的EBCDIC 1047字符

是否有标准/常见/简单的方式将这些角色映射到cp1047的等价物?

例如,文本有一个花哨的双引号字符(),我想将它转换为双引号(")。

很明显,我可以在我的代码中进行替换,但它们是更好的方法吗?有没有我不知道的开源工具或API?

+4

绝大多数的Unicode字符都没有_have_ CP1047等价物。 – SLaks

+1

请定义“等效”。 –

+1

这个问题http://stackoverflow.com/questions/4808967/replacing-unicode-punctuation-with-ascii-approximations指向这个网页与体面看转换表http://lexsrv3.nlm.nih.gov/LexSysGroup /Projects/lvg/current/docs/designDoc/UDF/unicode/DefaultTables/symbolTable.html – msandiford

回答

1

如果你想在EBCDIC(CP 1047)编码Unicode字符,那么(显然)有UTF-EBCDIC(虽然我不知道的,可以转换为任何现有的工具)。

或者,我会考虑使用非标准形式的Percent-encodingXML/HTML encoding。这两种编码中的任何一种都可能具有用于编码的现有工具(例如Commons Lang StringEscapeUtils)。最后,如果你只是想将扩展字符'映射'到CP 1047空间中,那么我猜你只剩下扫描一个字符的源字符串,并且从Map<Char, Char>(或Map<Char, String>)中构建结果字符串,所以只要你事先知道你必须处理的所有扩展字符以及他们期望的等价物/替代品。