如何将Windows-1252个字符转换为php中的值?

How to convert Windows-1252 characters to values in php?

我们有几个包含 Windows-1252 个字符的数据库字段:

an example pain— if you’re

这些值映射到此列表中的所需值:

http://www.i18nqa.com/debug/utf8-debug.html

我已经尝试了 htmlentites 的各种排列,mb_detect_encoding、uft8_decode 等,但尚未能够将这些值转换为:

一个痛苦的例子——如果你是

如何将这些字符转换为它们在 php 中列出的值?

您可以使用mb_convert_encoding

$str = "an example pain— if you’re";
$str = mb_convert_encoding($str, "Windows-1252", "UTF-8");
echo $str;
//an example pain— if you’re

演示:
http://ideone.com/NsIb5x

天哪,这个问题解决的时间太长了,所以我想 post 在这里回答我的问题,因为这个 link 一直在搜索中出现。我的 MySQL 数据库 table 使用 utf8mb4_unicode_520_ci 进行编码,并且一列包含那些烦人的工作卷曲引号。我试图读取 DB 值并使用 json_encode 进行编码,但它会失败并且 json_encode 会 return 空白,所以我使用 utf8_encode。那不正确地转换了字符。我不得不使用 mb_convert_encoding 从 Windows-1252 到 UTF-8,但 json_encode 也把它搞砸了。最后,这奏效了:

$file = urlencode(mb_convert_encoding ($stringwithcurlyquotes, "UTF-8", 'Windows-1252'));

由于我遇到了图像 URL 的问题,因此效果很好,不需要我在另一侧对其进行解码。