1

我有一个使用 UTF-8 Unicode 字符集的 MySql 数据库。在我的 JSP 中,当我有:

<meta http-equiv="Content-Type" content="text/html" charset="ISO-8859-1">

它会在数据库中正确插入西班牙口音。但是,当我使用:

<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">

它会插入 García 而不是 García

你们知道为什么使用 UTF-8 它不会插入重音符号吗?

4

3 回答 3

1

我不了解 JSP,但这通常与 db 连接如何从数据库中读取数据有关。在 PHP 中,为确保您正在读取使用 utf-8 编码的表(或数据库),您应该声明连接的字符集:

if(!$conexion->set_charset("utf8")) {
$errsql['juego_de_caracteres']="Error al conectar al servidor mysql :    ".mysqli_connect_error();

所以我想你可以在 Java 中做类似的事情。您可以在网络上阅读有关字符编码的信息。这个链接:http ://www.joelonsoftware.com/articles/Unicode.html我觉得很有用。
此外,如果您的设置不正确,那么输出可能是相当不可预测的,因为我有时在 Windows 字符中看到使用 ISO-8859-1 正确显示,但它们肯定不会在所有系统中正确显示。

于 2013-03-01T04:31:28.420 回答
1

由于我使用的是 Spring,因此我使用 CharacterEncodingFilter 解决了我的问题。这很有用,因为当前浏览器通常不会设置字符编码,即使在 HTML 页面或表单中指定也是如此

于 2013-03-01T05:48:24.043 回答
1

您必须设置三件事

(1) 告诉servlet引擎在源文件中使用了什么字符编码

(2)告诉servlet引擎你想输出什么字符集

(3) 告诉接收者流的字符编码是什么。

您的元标记仅完成其中的最后一项,但您实际上可能并未发送以该编码格式格式化的输出流。

使用它来告诉 servlet 引擎如何读取源文件,并且您需要输入对源文件进行编码的实际字符集。只有使用 UTF-8 编辑器时才会是 UTF-8。如果您不费吹灰之力将其设为 UTF-8,它可能是 ISO-8859-1:

<%@page contentType="text/html;charset=???????"%>

并用它来告诉它如何输出流:

response.setCharacterEncoding("text/html; charset=UTF-8")

在您的情况下,由于您知道数据库中的数据以 UTF-8 编码,因此可能是最后一个设置可以解决问题。

于 2013-03-01T15:44:21.777 回答