Struts 2如何支持多种语言的utf-8编码

时间:2015-09-06 17:08:56

标签: java utf-8 utf-16

我知道java使用UTF-16编码。即Java使用16 bits来编码字符。所以java可以支持65536个字符。所以java可以提供国际化。

当我使用Struts2时,我发现Struts2使用UTF-8编码,这意味着它只能支持256个字符,如ASCII,但Struts2仍然支持国际化。

现在我的问题是UTF-8编码如何仅支持256个字符的国际化?

3 个答案:

答案 0 :(得分:6)

UTF-16和UTF-8是Unicode字符集的几种编码中的两种。 Unicode中最多有1114112(0x0到0x10FFFF)个代码点。 UTF-16以一个或两个16位代码单元对Unicode代码点进行编码。 UTF-8以一到四个8位代码单元对Unicode代码点进行编码。

ASCII是使用一种编码设置的字符。它有128个代码点。通过Unicode的设计,Unicode的前128个代码点与ASCII相同。

Unicode比大多数字符集复杂一点。在Unicode中,字形(在一个位置呈现的符号)由一个基本代码点和任意数量的组合代码点的序列组成,例如变音符号或cedilla。

Java,JavaScript,.NET ...在内部使用UTF-16,以便字符串是UTF-16代码单元的计数序列,这意味着有不计数的代码点数和不计数的字素数。这使得迭代变得困难并且索引不可能。

但是,许多标准函数(如读取和写入文件)都使用UTF-8,因为它可以节省西方语言文本的空间。

答案 1 :(得分:4)

UTF-8最多使用6个字节(并且最多限制为4个字节,因为RFC 3629)以8位代码单位的形式对字符进行编码。 请参阅Wiki description

编码实际上是可变长度的,并且称为UTF-8,因为它使用8位代码单元。另一方面,UTF-16使用16位代码单元(最多2个16位代码单元,最多4个字节)。

答案 2 :(得分:0)

唯一的选择是使用ASCII格式的UTF-8(参见RFC 5137),即\uxxx。如果您使用的是ASCII字符集,则无需将它们转换为ISO-8859-1编码。对于其他字符集,您需要使用native2ascii工具将.properties文件的本机编码转换为ISO-8859-1编码。