簡體   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