名前の表示に関する問題が発生しました。私のアプリケーションは、PHP、Perl、BI Pentahoなど、さまざまなテクノロジーを使用しています。値をUTF-8に変換する際の問題
私はDBとしてMYSQLを使用しており、私のテーブルはCHARSET=utf8
です。
Row1 = Ãx—350
Row2 = Ñz–401
PHPとPerlがDBに格納されている上記の値を変換する組み込み関数で異なるを使用して間違っている以下のように行の値が格納されていると、それは、UIに表示される
これは以下のように私は、レポートのデータを表示する前にデータを変換するETLを使用していますPentahoのを使用しているレポートに来て正しい
Expected Row1 = Áx—350
Expected Row2 = Ñz–401
です。 DB上に格納された値を変換するために、私は
new java.lang.String(new java.lang.String(CODE).getBytes("Windows-1252"), "UTF-8")
以下のようにJavaの工程を経てデータを変換しようとしています。しかしそれだけで行2値がきている上記2つの間違った値のうち、適切な値に変換されていません正しく変換が、最初行1は誤って以下のように変換され
Converted Row1 = �?x—350
Converted Row2 = Ñz–401
例えば行1値が適切に変換する必要があるように、私は適切な値に変換することができますどのような方法を提案して下さいÁx-350になります。
Iは、上記のコードの出力は
Input Get Bytes = [[email protected]157ee3e5
Input Encoded = �?x—350-350—É1
以下の通りである
AX-350
String input = "Ãx—350";
byte[] b1 = input.getBytes("Windows-1252");
System.out.println("Input Get Bytes = "+b1.toString());
String szUT8 = new String(b1, "UTF-8");
System.out.println("Input Encoded = " + szUT8);
から350列「AXA€を変換するために、以下のように小さなJavaプログラムを書い
実際に期待される出力がÁx-350の場合、出力を見ると文字列が間違っています。
は符号化/復号化にスキームIは、テストストリングonlineを試み、ストリングAXA€」350でテスト出力が正しいAX-350予想されることを確認します。
私は適切なエンコード/デコードスキームを使用していますが、javaコードが正しく変換できないことを指摘してください。
実際の期待値はどうですか? "α-350"? UTF-8を正しく処理することができません。まず、http://stackoverflow.com/q/279170/476と[WebアプリケーションでUnicodeフロントを処理する](http://kunststube.net/frontback/)を参照してください。 – deceze
ありがとう@deceze、はい期待値はÁx-350 – Yog
変換するために使用しているコードはJavaScriptではなくJavaです。 – beasy