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

时间:2016-02-05 21:49:11

标签: php utf-8 windows-1252

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

an example pain— if you’re

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

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

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

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

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

2 个答案:

答案 0 :(得分:12)

您可以使用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

答案 1 :(得分:0)

天哪,这花了很长时间解决,所以我想在这里发布我的答案,因为该链接一直出现在搜索中。我的MySQL DB表使用utf8mb4_unicode_520_ci进行编码,并且其中一列包含那些烦人的工作花括号。我试图读取数据库值并使用json_encode进行编码,但是它将失败,并且json_encode将返回空白,因此我使用了utf8_encode。那不正确地转换了角色。我不得不使用mb_convert_encoding从Windows-1252转到UTF-8,但是json_encode也把它弄乱了。最后,它起作用了:

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

由于我在图片网址方面遇到问题,因此效果很好,不需要我在另一端对其进行解码。