繁体   English   中英

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

[英]ISO-8859-1, UTF-8 and spanish accents

我有一个使用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不会插入重音符号吗?

我不了解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正确显示,但肯定不能在所有系统中正确显示。

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

您必须设置三件事

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

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

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

您的meta标记仅完成这些操作的最后一个,但是实际上您可能并未发送以该编码格式设置的输出流。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM