我在一個基於Web的教育網站上工作,我們正在使用Perl,MySQL 5,Apache和模板工具包。我們計劃在我們的網站上引入對多種語言的支持。如何使用Perl編碼和解碼「急性重音字符」
我們在
都做,如果我們有一個標籤名稱,如課程主頁< \ H1>在我們的模板文件,我們已經轉換,要
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<h1>[% glossary.$language.courses_main_page %]<\h1>
其中$語言獲得。值當他登錄該用戶選擇
我們有一個表,以保持我們的MySQL數據庫這樣的數據:
CREATE TABLE
translation
(english
VARCHAR(255)NOT NULL,
language
VARCHAR(255)NOT NULL,translation
VARCHAR(2000)NOT NULL,)ENGINE = InnoDB的默認字符集= UTF8 COMMENT = 元文本的'翻譯到外語」
在MySQL的連接功能,我提供 'SET character_set_results = NULL'。 我試着用utf8,但限於某些選項卡的問題已增加到很多部分。
因此,只要用戶登錄到系統中,我們將獲取所有翻譯並將其存儲在PERL哈希中並將其緩存。我們將這個散列傳遞給將替換值的模板文件。
問題:像á和é等急性重音字符被替換爲一些不同的字符集符號。
例如:在前端,我們看到CursosPágina校長的「CursosPágina校長」。
它非常類似於htmlentities and é (e acute)
給出的解決方案的任何一個可以告訴我如何實現在Perl一樣。
感謝這個信息。有效。我不需要解碼步驟,因爲Db正在處理該步驟。我看到一些仍然不可讀的地方。 「所有當前條款」應顯示爲「Todos lostérminosactuales」,但顯示爲「Todos los t é rminos actuales」。我正在調試它。 charset = utf-8不適用於我。它重新介紹了這個問題。 – 2013-03-06 14:30:08
從數據庫中讀取數據並將其標記爲utf8可能存在問題(例如,通過':encoding(utf-8)'圖層);我認爲最好是手動編碼。 – 2013-03-12 12:20:25
'é'看起來像雙重實體編碼... – 2013-03-12 12:21:55