有关Java字符集编码的问题

Posted iamyzh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有关Java字符集编码的问题相关的知识,希望对你有一定的参考价值。

在Java语言中,下列关于字符集编码(Character set encoding)和国际化(i18n)的问题,哪些是正确的?

  A.每个中文字符占用2个字节,每个英文字符占用1个字节

  B.假设数据库中的字符是以GBK编码的,那么显示数据库数据的网页也必须是GBK编码的。

  C.Java的char类型,通常以UTF-16 Big Endian的方式保存一个字符。

  D.实现国际化应用常用的手段是利用ResourceBundle类

答案:CD

解析:

A 显然是错误的,Java一律采用Unicode编码方式,每个字符无论中文还是英文字符都占用2个字节。
Java的class文件编码为UTF-8,而虚拟机JVM编码为UTF-16
UTF-8编码下,一个中文占3个字节,一个英文占1个字节
B 也是不正确的,不同的编码之间是可以转换的,通常流程如下:
将字符串S以其自身编码方式分解为字节数组,再将字节数组以你想要输出的编码方式重新编码为字符串。
例:String newUTF8Str = new String(oldGBKStr.getBytes("GBK"), "UTF8");
C 是正确的。Java虚拟机中通常使用UTF-16的方式保存一个字符
D 也是正确的。ResourceBundle能够依据Local的不同,选择性的读取与Local对应后缀的properties文件,以达到国际化的目的。
 
综上所述,答案是  C 和 D。

以上是关于有关Java字符集编码的问题的主要内容,如果未能解决你的问题,请参考以下文章

Java字符集

mysql字符编码以及字符序

PostMan发送请求参数带有路径特殊字符会返回400错误(与URL字符及URL编码值有关)

PostMan发送请求参数带有路径特殊字符会返回400错误(与URL字符及URL编码值有关)

字符编码Java字符编码详细解答及问题探讨

java 多次以不同字符集编码解码后回不来的问题。