私たちのデータベースでは、UTF-8の印刷できない文字をサポートする機能を実装しています。私たちのシステムはそれらをデータベースに保存し、それらを検索します。ベース64の形で入力を収集し、バイト配列に変換してデータベースに格納します。取得中、データベースはバイト配列を返し、再び64に変換します。UTF-8の非印字文字 - SUSE Linux Javaはサポートしていません
検索処理中(dbが私たちにバイト配列を与えた後)、すべての属性は文字列配列に変換され、後で再度バイト配列に変換され、再び基底64に変換されて元に戻されます。ユーザー。
以下のコードは、Windows JDK(Java 8バージョン)で正しくコンパイルされ、正しく動作します。しかし、これがSuSe Linux環境に置かれると、奇妙な文字が表示されます。
public class Tewst {
public static void main(String[] args) {
byte[] attributeValues;
String utfString ;
attributeValues = new byte[]{-86, -70, -54, -38, -6};
if (attributeValues != null) {
utfString = new String(attributeValues);
System.out.println("The string is "+utfString);
}
}
}
与えられた出力が
ある "文字列がªºÊÚúある"
同じファイルがSUSE LINUXディストリビューション上で実行されたときに今、それは私を与えます:
"文字列は "
WindowsとLinuxの両方でJava 8を使用しています。 Linuxで正しく動作しないという問題は何ですか?
ところで、私たちも `utfString = new String(attributeValues、" UTF-8 ")を試みました。 。それはとにかく助けになりませんでした。何が足りないの?
私は、これはJavaプログラムとは関係がありませんが、文字列を印刷するために使用しているフォントとは関係ありません。 – Henry
もしそうなら、文字列がバイト配列に変換されるとき、それは元のバイト配列を返さなければなりませんが、元のバイト配列ではなく、何か他のものを与えています。バイト配列には5つの値の代わりに15の値が得られます。 – javaShilp
この変換テストのコードを表示できますか? – Henry