Java认证之Java中编码以及Unicode总结(10)1 C# Z2 s- T4 Y) G
6.7Google学习乱码
/ _1 L% P# X) x1 `: y { http://www.google.cn/search?hl=zh-CN&newwindow=1&q=学习4 M/ M( F; j; v- O/ Z* }
出现乱码。8 v7 E( L: P! u M
6.8 java 编译时的乱码
$ B! p* ^! h: A 对于不是平台默认编码的情况下,java源文件在编译时,需要指定源文件的编码,否则无法正常编译。
! e. C/ `2 B/ h5 v5 o# D 1、对于win下默认的GBK编码1 ?5 A5 d$ `% A/ S* l5 E
C:\》javac SqlUtility.java9 e4 y6 p/ ]$ c) Q6 T. V3 T1 P* H
C:\》javac -encoding GBK SqlUtility.java
6 d) R) V5 A' ?5 D" j4 z C:\》javac -encoding utf-8 SqlUtility.java
, c& M: I9 I, Z8 M& z 14% \: h W8 @+ _% {
SqlUtility.java:24: 警告:编码 utf-8 的不可映射字符* H9 A: |. L0 g* ^7 K8 A; {
* ????????????????
9 b. I. J& }5 P; r5 L6 D ^1 D% a3 C F9 m
2、对于unicode的默认是utf-160 e. f' p$ N9 ~) X: \, b
C:\》javac SqlUtility.java
I4 R/ \* X9 c# j h SqlUtility.java:38: 非法字符: \0
' q1 C+ {. v# m6 Q: j" q% C C:\》javac -encoding utf-16 SqlUtility.java
- }5 Y- s! T! H0 r4 _. w7 J 3、对于utf-8的编码,win下需要删除文件头的二进制编码EFBBBF(因为它是由Unicode标准的FEFF,为了保证字节序而存在),并不是! t7 T3 E4 A$ ?; L1 B$ |2 g- j9 F' D
C:\》javac SqlUtility.java
+ T: w! q9 h1 @0 V/ l SqlUtility.java:1: 警告:编码 GBK 的不可映射字符: i: _6 h" w3 P! T* U) ]
锘?**
! t! _& a" ]( o: n ^
5 }& V; {* Y- F" A" q/ A8 V SqlUtility.java:1: 非法字符: \65533
, r9 P6 d8 [) u) P6 y% m+ Y 锘?**8 u1 @1 ^* y/ v% n. z5 ~ P, t& ^
^
1 _# G: B7 ^/ A4 { 1 错误; B$ W% C0 b7 d1 |) w
1 警告
* z4 s4 ` q% C C:\》javac -encoding utf-16 SqlUtility.java3 S2 _: {* e: R' E
SqlUtility.java:1: 非法字符: \61371
& ?# k9 U& m1 `% i S2 h C:\》javac -encoding utf-8 SqlUtility.java0 f# t: Z& u8 L7 o5 Q
SqlUtility.java:1: 非法字符: \65279
) k5 c* A5 v' |$ D ?/**
4 b4 [- @( v8 c- J1 k ^
* T8 U, X. ^% ] 1 错误- k5 {2 I- `" y. I9 \: q* H
注:删除EFBBBF之后的
' g" S7 |9 M. a C:\》javac -encoding utf-8 SqlUtility.java |