【发布时间】:2013-02-21 05:48:34
【问题描述】:
我在一个基于 Web 的教育网站工作,我们使用 Perl、MySQL 5、Apache 和 Template Toolkit。我们计划在我们的网站中引入对多语言的支持。
我们做了什么
如果我们的模板文件中有一个类似于 Courses Main Page 的选项卡名称,我们已将其转换为
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<h1>[% glossary.$language.courses_main_page %]<\h1>
$language 获取用户登录时选择的值。
我们在 Mysql DB 中有一个表来维护这些数据:
创建表
translation(englishvarchar(255) NOT NULL,languagevarchar(255) NOT NULL,translationvarchar(2000) NOT NULL, ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='翻译 元素文字转外语'
在 MySQL 的连接函数中,我提供了 'SET character_set_results=NULL'。 我尝试使用 utf8,但仅限于某些选项卡的问题增加了很多部分。
因此,一旦用户登录系统,我们就会获取所有翻译并将其存储在 PERL 哈希中并缓存它。我们将此哈希传递给模板文件,模板文件将替换该值。
问题:á 和 é 等重音符号正在被一些不同的字符集符号取代。
例如:在前端,我们看到 Cursos Página Principal 的“Cursos Página Principal”。
和htmlentities and é (e acute)中给出的解决方案非常相似
谁能告诉我如何在 Perl 中实现同样的功能。
【问题讨论】:
标签: html mysql perl template-toolkit