1

我有一个代码可以将匈牙利语的 CSV 文件导入 MySQL 表。一切正常,直到在要插入的字符串中遇到像 ő,é 等重音字符。从字符串中删除重音字母后的所有字符,仅将剩余的字符插入表中。例如,“Artículos Eróticos”插入为“艺术”

代码没有什么复杂的。要阅读的代码如下所示

$content = file_get_contents($this->request->files['import']['tmp_name']);
$lines = explode("\n",$content);
foreach($lines as $line) {
    //Skip header row and empty lines
    if ($lineno != 1 && (!empty($line)))  {
        $fields = explode(";",$line);

$fields使用 mysql_query形成并插入一个 INSERT 查询。浏览器窗口中的查询回显显示完整字符串,但数据库只有部分字符串。我想知道这是否与 mysql 设置或 unicode 字符串有关。

4

1 回答 1

0

使用mbstring

mbstring 提供了多字节特定的字符串函数,可帮助您处理 PHP 中的多字节编码。除此之外,mbstring 还处理可能的编码对之间的字符编码转换。mbstring 旨在处理基于 Unicode 的编码,例如 UTF-8 和 UCS-2 以及许多单字节编码,以方便使用(如下所列)。... mbstring 是非默认扩展名。这意味着默认情况下不启用它。您必须使用配置选项显式启用该模块。

原因: PHP 已经过时了。刚出现时,UTF-8 并没有被广泛使用。即使 PHP 5 已经发布,这个遗留的“功能”仍然存在。为了减轻由此引起的问题(另一个例子,破折号“-”将产生与普通字符串类似的问题)

于 2013-08-17T06:30:00.097 回答