ISO-8859-1,UTF-8和西班牙语口音

时间:2013-03-01 04:09:50

标签: java mysql utf-8 iso-8859-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不会插入重音符号吗?

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

由于我使用Spring,我使用CharacterEncodingFilter解决了我的问题。这很有用,因为即使在HTML页面或表单

中指定,当前浏览器通常也不会设置字符编码

答案 2 :(得分:0)

您需要设置三件事

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

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

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

元标记仅完成最后一个,但您实际上可能不会发送以该编码格式化的输出流。

使用它来告诉servlet引擎如何读取源文件,并且需要输入源文件编码的实际字符集。只有在使用UTF-8时它才是UTF-8编辑。它可能是ISO-8859-1,如果你没有花费一些力气使它成为UTF-8:

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

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

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

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