0

我有一个 RESTful 服务,它需要请求中的字符串。从浏览器传递字符串时,重音字符会出现乱码 (�),因为默认浏览器编码是 ISO-8859-1。如果我将浏览器编码更改为 UTF-8,重音字符会保留在请求字符串中。

有没有办法更改字符串编码并在服务器端以 UTF-8 重新构造字符串,这样我就不需要每次都更改浏览器编码?

谢谢

4

2 回答 2

1

我发现大多数浏览器的默认编码取决于它们所安装的系统。我的大多数(尤其是在 Windows 上)默认为 ISO-8859-1 或 CP1252,这与这个原始帖子相对应。确保您的 http 标头和 html 元标记指定 UTF-8 编码,并确保您的 servlet 容器默认设置为使用 UTF-8(请参阅http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q8如果你正在使用tomcat)。

有时,您仍然会通过使用(例如)CP1252 将应用程序的复制粘贴逐位粘贴到 UTF-8 页面上的文本区域中。我从来没有让这个工作没有乱码。

于 2012-10-10T18:23:14.180 回答
0

UTF-8 编码标准能够编码任何 Unicode 代码点。ISO-8859-1 只能处理其中的一小部分。因此,从 ISO-8859-1 转码到 UTF-8 不是问题。当发现不受支持的字符时,从 UTF-8 倒退到 ISO-8859-1 将导致“替换字符”(�) 出现在您的文本中。要对您的测试进行转码,您可以这样做:

byte[] utf8 = new String(latin1, "ISO-8859-1").getBytes("UTF-8");

或者

byte[] latin1 = new String(utf8, "UTF-8").getBytes("ISO-8859-1");
于 2012-10-10T18:15:08.990 回答