如何处理外语?

时间:2010-11-09 15:29:11

标签: html database zend-framework character-encoding special-characters

我正在开发一个巴西网站,该网站必须支持á, à, ó, í ú, ê, etc等外国字符。它也使用AJAX所以我认为最好使用charset UTF-8'因为我总是得到 角色而我不知道如何解决这个问题。

使用UTF-8时,我的导航菜单显示正确(因为它查询数据库以呈现整个菜单),但我不知道它是怎么做的。以下是数据库的一些屏幕截图及其呈现方式: The database alt text

到目前为止一切顺利。麻烦的是我开始使用Zend_Navigation来渲染面包屑,我不知道如何克服我得到的 字符: the breadcrumb alt text

我该怎么办?将字符集更改为ISO-8858-1?我已经这样做但是看起来一切都错了:

alt text

修改

此外,当我将其更改为missão时,它会显示missão而不是missão。此外,我不能手动更改它因为它在数据库中,我需要一种能够处理这个的功能

编辑2

我将数据库中的特殊字符(例如çã)更改为çã,现在HTML正常呈现。虽然,我正在使用Zend_Navigation进行面包屑,它正在渲染missão而不是missão,就像这样:

alt text

我还使用Zend_Config_Writer_Xml编写了一个XML文件,我看到它打印<label>Informa&#xE7;&#xF5;es</label>而不是<label>Informações</label>。以防万一

我该怎么办?

3 个答案:

答案 0 :(得分:6)

这是一篇非常好的文章,当我开始进行Web开发时帮助了我。我在一个多语言环境中工作,所以我不断碰到这些东西(只是为了增加文章的精彩程度:)

The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

我总是确保我的文件以UTF8行编码保存,我的php头文件将字符串声明为utf8,我的数据库使用utf8_general_ci进行整理,并且我的html head标签包含声明内容的元标记作为utf8。我认为这涵盖了它。

HTH:)

编辑:只是添加(更多针对您的特定问题)检查您的PHP代码是否将您的结果视为utf8。数据可能正确存储在数据库中,但可以在服务时进行转换。

答案 1 :(得分:0)

确保您的数据库使用UTF-8字符集和您的数据库连接(在MySQL和您的PHP代码之间传输字符的编码)是UTF-8(请参阅this post以供参考)。

另请注意,PHP中的某些字符串操作会破坏UTF8编码的字符串,因为它们的假设是“1 char = byte”,而UTF 8则不然.htmlspecialchars不适用于UTF-8编码字符串。

答案 2 :(得分:0)

尝试更改.php文件编码 - 打开.php文件并将其保存(或覆盖)为utf8文件。希望它有所帮助。