2

文字列が\u0130smailあり、それをİsmailに変換して変換したい

  \u0130 --> İ   
  \u00E7 --> ç

私は試した

String str = "\u0130smail";
sysout(str); 

動作しましたが、DBまたはインターネットから文字列を取得すると"\u0130smail"、正しい結果が得られません。

static String deneme(String string){
    String string2 = null;

    try {
        byte[] utf8 = string.getBytes("UTF-8");
        string2 = new String(utf8, "UTF-8");
    } catch (UnsupportedEncodingException e) {
    }
    return string2;
}

どちらも機能しませんでした。

4

2 に答える 2

3

文字列"\u0130smail""İsmail"は、言語の観点からはまったく同じです。文字列を取得する場合"\\u0130smail"(バックスラッシュをエスケープしたことに注意してください)、Unicodeコードポイントのパターンを見つけて通常のUnicode文字に変換するか、数字を印刷する必要があります。この場合、正規表現が役立ちます。

于 2012-03-08T15:25:32.500 に答える
0

既存の文字列をバイトに変換してから元に戻すことは役に立ちません。あなたはあなたが持っている文字列の正確な文字を見て、そしてあなたがそれらをどのように得たかを理解する必要があります。

文字列内の各文字の整数値を整数(理想的には16進数)として出力して、何が得られているかを正確に把握することをお勧めします...次に、可能な限りトレースして、何が問題になっているのかを突き止めます。 。

于 2012-03-08T15:18:38.880 に答える