1

私は、次のことを行うシナリオに取り組んできました。

  1. 入力データを Unicode 形式で取得します。[UTF-8]
  2. ISO-8559 に変換します。
  3. エンコードでサポートされていない文字を検出して置換します。[ユーザー定義のキーと値のペアに基づく]

私の質問は、ISO-8559 に関する詳細な情報を見つけようとしてきましたが、まだ運がありません。これについてもっと知っている人はいますか?これは ISO-8859 とどのくらい違うのですか? 詳細は非常に役立ちます。

次に、ISO-8559 の要件はさておき、受信データを Java で ISO-8859 に変換するプログラムを作成しました。文字ベースの置換を使用して必要なことを達成することはできますが、データ サイズが巨大な場合は明らかに時間がかかるようです。[MB]

これを行うためのより良い方法があるに違いないと確信しています。誰か教えてください。

4

1 に答える 1

2

UTF-8 を ISO-8859 -1、つまり Western Latin-1に変換したいと思います。ネットには多くの文字セット テーブルがあります。

  1. 一般に、Web ブラウザーと Windows では、MS Word で見られるように、特別な引用符を使用して、0x80 から 0xBF の範囲を再定義する拡張機能であるWindows-1252に変換することをお勧めします。ブラウザは、Mac でも ISO-559-1 でこれらのコードを解釈することが事実上可能です。

  2. Java 標準の変換new OutputStreamWriter(new FileOutputStream("..."), "Windows-1252")は、すでに多くのことを行っています。一種のフィルターを作成するか、導入された?未翻訳の特殊文字を見つけることができます。Windows-1252 にないアクセント付きのラテン文字を ASCII 文字として翻訳できます。

        String s = ...
        s = Normalizer.normalize(s, Normalizer.Form.NFD);
        return s = s.replaceAll("\\p{InCombiningDiacriticalMarks}", "");
    
  3. ヒンディー語やキリル文字などの他のスクリプトの場合、検索するキーワードはtransliterationです。

于 2012-11-12T16:46:45.780 に答える