1

我正在尝试将带有泰语字符的 CSV 或 Unicode 文本导入 MySQL。MySQL 保存泰语字符没有问题。问题是,当我使用 fgetcsv 或 fgets 时,我会得到垃圾来换取泰语字符。例如,这些字符 ตู้เซฟเหล็ก 变为 9I@@+%G。

还有其他方法可以读取 CSV 文件吗?也许可以正确读取它们的功能?

4

1 回答 1

2

函数 fgets 和 fgetcsv 使用系统区域设置来假设字符编码。在我看来,为此目的更改语言环境设置并不是明确的解决方案。还有另一种方法。您只能使用 utf-8 并将 unicode 显式转换为 utf-8:

示例代码(php >= 5.3):

<?php
//set internal encoding to utf8
mb_internal_encoding('utf8');

$fileContent = file_get_contents('thai_unicode.csv');

//convert content from unicode to utf
$fileContentUtf = mb_convert_encoding($fileContent, 'utf8', 'unicode');

echo "parse utf8 string:\n";
var_dump(str_getcsv($fileContentUtf, ';'));

结果是:

php load.php
parse utf8 string:
array(2) {
  [0]=>
  string(36) "ตู้เซฟเหล็ก"
  [1]=>
  string(1) "1"
}
于 2013-10-20T10:56:44.780 回答