PHP字符串转换编码从utf8到cp1251,通过html-mnemonics替换不可能的字符

时间:2017-06-08 04:35:23

标签: php string encoding utf-8 mb-convert-encoding

我将字符串编码从宽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

Live example on ideone

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

我的代码是:

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

Live example on sandbox.onlinephpfunctions

2 个答案:

答案 0 :(得分:0)

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

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

如果追加字符串//IGNORE,则不能包含字符   在目标字符集中表示的是静默丢弃

有关完整说明,请参阅链接: http://php.net/manual/en/function.iconv.php

答案 1 :(得分: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