如何将utf8字符串转换为iso 8859-1?
为什么没有imap_mime_header_decode
检测到utf8
已编码的字符串?
我需要删除所有4字节的unicode字符,以便字符串适合mysql utf8
尝试了这个,但它没有用
$text = mb_convert_encoding($text, 'UTF-8', 'UTF-8');
$input = '=?UTF-8?Q?=c3=b8en?=';
echo "$input\n";
$output = '';
foreach(imap_mime_header_decode($input) as $element){
if($element->charset == 'utf-8'){
echo "utf8 charset = $element->text\n";
$output .= $element->text;
}
else{
echo "default charset = $element->text\n";
$output .= $element->text;
}
}
// Here output should be iso 8859-1
echo "$output\n";
$string = preg_replace('/[^a-zæøåA-ZÆØÅ0-9 \-\.,:]/', '', $output);
// Back to utf8
$string = utf8_encode($string);
echo "$string\n";
=?UTF-8?Q?=c3=b8en?=
default charset = øen
øen
en
答案 0 :(得分:0)
使用htmlentities()
将特殊字符转换为HTML实体。您可以选择指定源字符串的编码,鼓励指定。在你的情况下,这将是'UTF-8'。 HTML实体可以安全地存储在数据库中,并且可以安全地以转义形式输出,但您可以选择使用html_entity_decode
将尽可能多的字符转换回您选择的编码。
答案 1 :(得分:0)
我想出了这个解决方案..首先它转换为utf-8
(包括4个字节的unicode字符),然后转换为iso 8859-1
,然后剥离不需要的字符,最后编码为{{1} }
:d
utf-8