0

我将字符串编码从宽编码转换utf8为有限编码cp1251。我需要保留一些未包含在 cp1251 中的字符。

在 python 2.x 中有一个特殊的函数,它在编码转换期间用 html-entities 替换不可能的字符:

# -*- coding: utf-8 -*-

s_in = "Ø 125 mm".decode('utf8')
s_out = s_in.encode('cp1251', 'xmlcharrefreplace')
print s_out # prints Ø 125 mm

ideone上的实时示例

PHP 中是否有任何现成的 func/lib 来完成这项任务?

我的代码是:

<?php
$in = 'Ø 125 mm';
$out = mb_convert_encoding($in, 'cp1251', 'utf8');
echo $out; // prints ? 125 mm

sandbox.onlinephpfunctions 上的实时示例

4

2 回答 2

0

尝试json_encode_JSON_UNESCAPED_UNICODE

$in = 'Ø 125 mm';
$out = json_encode($in, JSON_UNESCAPED_UNICODE);
echo json_decode($out, true);    

http://sandbox.onlinephpfunctions.com/code/cfd9f38ed7ad8b668285be31004bfe2578da6436

于 2017-06-08T06:27:24.717 回答
0

通过使用iconv()函数,PHP您可以将字符串从一种编码方案转换为另一种编码方案。例子:

$out = iconv("UTF-8", "CP1251//IGNORE", $in);

如果附加字符串//IGNORE,目标字符集中无法表示的字符将被静默丢弃

完整描述见链接: http: //php.net/manual/en/function.iconv.php

于 2017-06-08T04:57:22.410 回答