如何从 mysql/phpmyadmin 以 UTF8 显示文本?

如何从 mysql/phpmyadmin 以 UTF8 显示文本?

我有一个包含多个表的数据库。数据库和表以及表的每一行都设置为utf8_romanian_ci

我导入的每个包含变音符号的名称都无法正确显示。

例如:如果我MaÂehx在表中介绍,我刚刚M

表格中的数据是从csv文件导入的。在 Excel 中,变音符号可以正常显示。

我该如何解决这个问题?

答案1

UTF-8 是个反复无常的情妇。对于典型的 Web 应用程序,您必须在多个级别设置 UTF-8。即使 phpMyAdmin 代码与 UTF8 配合良好,它也不是在真空中运行的:服务器配置很重要。数据库也很重要,数据库的数据源也很重要。让我们总结一下一般应用程序中可能存在摩擦的区域,特别关注 phpMyAdmin 感兴趣的区域。

A. 数据来源

当数据被导入数据库时​​(例如从文本文件导入),它必须具有正确的编码。变音符号可能显示在 Excel 中,但编码可以是任何内容。因此,您可能会得到一个看起来正确但无法正确导入的 CSV 文件。您可以在文本编辑器(例如 EditPad)或 IDE(例如 Komodo)中检查和转换 CSV 文件的编码。在许多人都有的 Notepad++ 中,您可以选择“编码”来查看当前编码,并且可以根据需要选择编码/转换为 UTF8。

B. 在您的数据库中。表的字符集和排序规则必须设置为 UTF-8。听起来你可能已经这样做了。

如果没有的话,你需要类似以下的东西:

ALTER TABLE MyTable
DEFAULT CHARACTER SET utf8,
COLLATE utf8_general_ci;

这是通用设置,但您的罗马尼亚语排序规则也应该可以正常工作。

C.与数据库的连接。你需要类似这样的东西:

$connectDSN = "mysql:host={$db_host};dbname={$db_name};charset=UTF-8";

PhpMyAdmin 应该可以正确连接。在登录页面上,您应该会看到

Server charset: UTF-8 Unicode (utf8) 

如果没有,请继续阅读。

D. php 必须处理 UTF8。在 php.ini 中,你会需要类似这样的内容:

default_charset = UTF-8     
mbstring.language = Neutral 
mbstring.internal_encoding = UTF-8      
mbstring.encoding_translation = On      
mbstring.http_input = auto      
mbstring.http_output = UTF-8        
mbstring.detect_order = auto        
mbstring.substitute_character = “0xFFFD”    

您可以使用 phpinfo() 检查服务器设置。在共享主机上,您通常无法访问 php.ini,而必须直接在脚本中更改设置。顺便说一句,请记住使用 mb 函数。

E. 标题设置

为了让浏览器知道它获取了什么,它需要接收 php 发送的如下标头:

<?php  header('Content-type: text/html; charset=UTF-8');   ?>

这应该不是 phpMyAdmin 的问题。在 Firefox 中,使用 Web 开发人员扩展,您可以转到信息/查看页面信息。在常规选项卡中,这将显示编码。

F. HTML 元标签

建议这样做以帮助浏览器。

<meta charset="UTF-8">

这应该不是 phpMyAdmin 的问题。再次检查浏览器中看到的编码。

G. 字体

浏览器可能没有字体来显示某些字符,尽管现代版本在后备字体方面做得相当不错。这对你来说可能不是问题。

因此有很多地方可能会出错。

希望这可以帮助您识别问题!

当所有东西都排好队时,就会出现奇迹……你会在任何地方都获得 UTF8。

别忘了:

没有人能想象生活会变得如此糟糕。

没有人能想象生活会变得如此糟糕

相关内容