我需要将csv文件中的列名存储到mysql DB中,在PHP中,我曾经将字符串转换为utf8_encode格式。它不适用于某些字符串,
$name = "Téléphone"
echo utf8_encode($name); // it works
output : Téléphone
$name = "Etat œuvre"
echo utf8_encode($name); // it does not works
output : Etat Å?uvre
用于测试:
echo bin2hex($name);
output: 45746174209c75767265
答案 0 :(得分:1)
45746174209c75767265
此处的“ –”是9c
,它指向用Windows-1252编码的字符串。 utf8_encode
从ISO-8859-1转换为UTF-8,因此您进行了错误的编码转换。正确的是:
mb_convert_encoding('Etat œuvre', 'UTF-8', 'CP1252')
答案 1 :(得分:-1)
utf8_encode
不是此任务的“正确工具”。尝试使用mb_convert_encoding
。
示例:
function encodeUtf8(string $data): string
{
if (!mb_check_encoding($data, 'UTF-8')) {
return mb_convert_encoding($data, 'UTF-8');
}
return $data;
}
echo encodeUtf8('Téléphone'); // Téléphone
echo encodeUtf8('Etat œuvre'); // Etat œuvre