-Dfile.encodingとCharset.defaultCharset
Charset.defaultCharset()
Charset.defaultcharset()は、デフォルトではオペレーティングシステムのエンコーディングです.-Dfile.encoding=UTF-8を設定して変更できます.
Charset.defaultcharset().
Charset.defaultcharset()とは、jvm入力ストリーム、出力ストリームがデフォルトで使用する符号化/復号方式を指す.
-Dfile.encoding
file.encodingは、Charset.defaultcharset()に影響を与えるシステム属性です.注意jvm起動後、
System.setProperty(「file.encoding」,「GBK」)で属性値を変更しますが、file.encodingという属性値を変更しただけで、Charset.defaultcharsetには影響しません.jvm起動時に既に設定されているため、Charset.defaultcharset()です.
-Dfile.encodingは最終的にreaderとwriter,readerに影響し,バイナリを文字に符号化するには符号化方式が必要である.writerの場合、文字をバイナリに符号化するには、符号化方式が必要です.
-Dfile.encodingとCharset.defaultCharset()の関係
jvmの起動時に-Dfile.encodingでCharset.defaultcharset()を設定しますが、起動後はCharset.defaultcharset()は変更できません.
例えばjava-Dfile.encoding HelloWorld
Charset.defaultcharsetの役割
Charset.defaultcharsetは、java入力ストリーム、出力ストリームのデフォルトの符号化復号に影響を与える「オペレーティングシステム符号化」です.
たとえば
例を変えてみる
file.encoding=utf-8は、Charset.defaultcharset()に影響し、「中」.getBytes()の3バイト
file.encoding=GBKは、Charset.defaultcharset()に影響し、「中」.getBytes()の2バイト
file.encoding=utf-16、Charset.defaultcharset()に影響し、「中」.getBytes()の4バイト
charset.defaultcharset実行「クライアント環境」の影響
-Dfile.encodingを設定しない場合は、
charset.defaultcharsetは、「クライアント環境」の実行の影響を受けます.
1、eclipseでは、utf 8、utf 16で符号化された2つのjavaファイルをそれぞれ書き、cを印刷する
harset.defaultCharset、結果はそれぞれutf-8、utf-16
これは、eclipseがjava HelloWorldを実行するときに-Dfile.encodingに転送された可能性があるためです.
2、クライアント(windowsコマンドライン、デフォルトはgbkコードページ)でfile.encodingを指定せず、この2つのファイルはgbkを出力する
Charset.defaultcharset()は、デフォルトではオペレーティングシステムのエンコーディングです.-Dfile.encoding=UTF-8を設定して変更できます.
Charset.defaultcharset().
Charset.defaultcharset()とは、jvm入力ストリーム、出力ストリームがデフォルトで使用する符号化/復号方式を指す.
-Dfile.encoding
file.encodingは、Charset.defaultcharset()に影響を与えるシステム属性です.注意jvm起動後、
System.setProperty(「file.encoding」,「GBK」)で属性値を変更しますが、file.encodingという属性値を変更しただけで、Charset.defaultcharsetには影響しません.jvm起動時に既に設定されているため、Charset.defaultcharset()です.
-Dfile.encodingは最終的にreaderとwriter,readerに影響し,バイナリを文字に符号化するには符号化方式が必要である.writerの場合、文字をバイナリに符号化するには、符号化方式が必要です.
-Dfile.encodingとCharset.defaultCharset()の関係
jvmの起動時に-Dfile.encodingでCharset.defaultcharset()を設定しますが、起動後はCharset.defaultcharset()は変更できません.
例えばjava-Dfile.encoding HelloWorld
Charset.defaultcharsetの役割
Charset.defaultcharsetは、java入力ストリーム、出力ストリームのデフォルトの符号化復号に影響を与える「オペレーティングシステム符号化」です.
たとえば
//-Dfile.encoding=utf8
String s = " ";
byte[] b = s.getBytes();// , utf-8 , s.getBytes("utf-8")
System.out.println(new String(b));// , utf-8
System.out.println(new String(b,"gbk"));// , gbk
例を変えてみる
file.encoding=utf-8は、Charset.defaultcharset()に影響し、「中」.getBytes()の3バイト
file.encoding=GBKは、Charset.defaultcharset()に影響し、「中」.getBytes()の2バイト
file.encoding=utf-16、Charset.defaultcharset()に影響し、「中」.getBytes()の4バイト
charset.defaultcharset実行「クライアント環境」の影響
-Dfile.encodingを設定しない場合は、
charset.defaultcharsetは、「クライアント環境」の実行の影響を受けます.
1、eclipseでは、utf 8、utf 16で符号化された2つのjavaファイルをそれぞれ書き、cを印刷する
harset.defaultCharset、結果はそれぞれutf-8、utf-16
これは、eclipseがjava HelloWorldを実行するときに-Dfile.encodingに転送された可能性があるためです.
2、クライアント(windowsコマンドライン、デフォルトはgbkコードページ)でfile.encodingを指定せず、この2つのファイルはgbkを出力する