2011-08-16 17 views
3

ターゲットエンコード(CP 1047)でサポートされていない文字を含む文字列をエンコードしようとしています。Unicode文字を同様のEBCDIC 1047文字に自動的にマップします。

これらの文字をcp1047に相当するものにマッピングする標準/共通/簡単な方法はありますか?

たとえば、テキストには空白の二重引用符()が含まれており、それをまっすぐな二重引用符(")に変換します。

明らかに私のコードで置き換えを行うことができますが、より良い方法ですか?私が知らないオープンソースツールやAPIはありますか?

+4

大多数のUnicode文字は、同等のCP1047文字を持っていません。 – SLaks

+1

「同等」を定義してください。 –

+1

この質問http://stackoverflow.com/questions/4808967/replacing-unicode-punctuation-with-ascii-approximationsまともな見た目の変換テーブルを持つこのWebページを指します。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-encodingまたはXML/HTML encodingの非標準形式を使用します。これらの2つのエンコーディングのいずれかに、エンコーディングのための既存のツール(Commons Lang StringEscapeUtilsなど)が含まれている可能性があります。

最後に、拡張文字をCP 1047スペースにマップしたいのであれば、ソース文字列を文字単位でスキャンし、結果の文字列をMap<Char, Char>(またはMap<Char, String>)から作成すると思います。あなたが対処しなければならないすべての拡張文字とそれらの望ましい等価物/置換文字をあらかじめ知っている限り、

関連する問題