0

我在 UTF-8 编码上遇到了一些问题。我有一个 CSV 文件,这是它的内容:

Quién tú - Tes,  más , S03
Who you, More, SO2

我已经一一提取了它,我的循环中有这个条件

if(mb_detect_encoding($exploded_value[$i], 'UTF-8', true))
{
   echo $cleaned_data = utf8_encode($exploded_value[$i]);
}
else
{
  echo $cleaned_data=$exploded_value[$i];
}

我清理的数据变成了这样:

Quién tú - Tes
más
S03

Who you
More
SO2

像 á, ç, ú 这样的字符会被解码,当检索到它时会给出错误的输出。

带有西班牙字符的文本被检测为 UTF-8 编码字符。因此,它属于 utf8_encode($exploded_value[$i])。当 utf8_encode 执行它的过程时,它被解码了。

我的元内容类型的声明是 charset=UTF8

任何人都遇到过这个问题。你能分享一下你是如何解决的吗?请帮忙。我用谷歌搜索并没有找到任何运气。

4

1 回答 1

1

您的逻辑是相反的:您正在重新编码已经 utf-8 编码的内容,而不是您按原样传递的内容。

要解决此问题,只需切换ifelse主体:

if(mb_detect_encoding($exploded_value[$i], 'UTF-8', true))
{
   // already UTF-8
   echo $cleaned_data=$exploded_value[$i];
}
else
{
   // not yet UTF-8
   echo $cleaned_data = utf8_encode($exploded_value[$i]);
}
于 2012-06-22T06:21:07.140 回答