如何将带有“(ISO-8859-1)字符的字符串转换为普通(UTF-8)字符?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将带有“(ISO-8859-1)字符的字符串转换为普通(UTF-8)字符?相关的知识,希望对你有一定的参考价值。

<li>Jain R.K. and Iyengar S.R.K., “Advanced Engineering Mathematicsâ€, Narosa Publications,</li>

我在数据库中有很多原始的html字符串。所有文字都有这些奇怪的字符。我如何转换为普通文本以将其保存回数据库中。

$final = '<li>Jain R.K. and Iyengar S.R.K., “Advanced Engineering Mathematicsâ€, Narosa Publications,</li>';
$final = utf8_encode($final);

$final = htmlspecialchars_decode($final);

$final = html_entity_decode($final, ENT_QUOTES, "UTF-8");

$final = utf8_decode($final);

echo $final;

我尝试了上面的代码,它在Web浏览器中正确显示,但仍然在数据库中保存相同的奇怪字符。

数据库的字符集是utf-8

答案

“的“Mojibake”。您可以尝试避免使用非ascii引号,但这只会延迟重新陷入麻烦。

您需要在表和连接中使用utf8mb4。请参阅this了解Mojibake的可能原因。

另一答案
$final = '<li>Jain R.K. and Iyengar S.R.K., “Advanced Engineering Mathematicsâ€, Narosa Publications,</li>';

$final = str_replace("Â", "", $final);
$final = str_replace("’", "'", $final);
$final = str_replace("“", '"', $final);
$final = str_replace('–', '-', $final);
$final = str_replace('â€', '"', $final);

对于过去的数据,我用UTF-8字符替换了奇怪的字符。

对于未来的数据,我在php,html和数据库连接中为utf8制作了charset。

以上是关于如何将带有“(ISO-8859-1)字符的字符串转换为普通(UTF-8)字符?的主要内容,如果未能解决你的问题,请参考以下文章

如何将带有列标题的 QTreeView 重做为 QTableView?

如何将带有对象数组的 json 字符串转换为带有 nsdictionaries 的 nsarray - IOS

如何将 Spring MVC 控制器映射到带有和不带有斜杠的 uri?

如何将带有 SVG 的 div#WareHouse 转换为图像

如何将带有斜杠的 URL 重定向到没有斜杠的相应 URL?

如何将带有请求正文的 HTTP DELETE 转码为 gRPC