我正在尝试将带有泰语字符的 CSV 或 Unicode 文本导入 MySQL。MySQL 保存泰语字符没有问题。问题是,当我使用 fgetcsv 或 fgets 时,我会得到垃圾来换取泰语字符。例如,这些字符 ตู้เซฟเหล็ก 变为 9I@@+%G。
还有其他方法可以读取 CSV 文件吗?也许可以正确读取它们的功能?
我正在尝试将带有泰语字符的 CSV 或 Unicode 文本导入 MySQL。MySQL 保存泰语字符没有问题。问题是,当我使用 fgetcsv 或 fgets 时,我会得到垃圾来换取泰语字符。例如,这些字符 ตู้เซฟเหล็ก 变为 9I@@+%G。
还有其他方法可以读取 CSV 文件吗?也许可以正确读取它们的功能?
函数 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"
}