如何转换字符串“ (iso-8859-1)字符到普通(utf-8)字符?

um6iljoc  于 2021-06-25  发布在  Mysql
关注(0)|答案(3)|浏览(573)
<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

g0czyy6m

g0czyy6m1#

$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。

oknrviil

oknrviil2#

使用ftfy工具修复文本更安全https://ftfy.readthedocs.io/en/latest/

vwhgwdsa

vwhgwdsa3#

“ “mojibake”是什么意思 . 您可以尝试避免使用非ascii引号,但这只会延迟重新陷入麻烦。
你需要使用 utf8mb4 在您的表和连接中。关于莫吉巴克的可能原因,请看这篇文章。

相关问题