我需要将UTF-8中的文本转换为ISO-8859-1中编码的文本,这样任何不属于ISO-8859-1集的字符都将变成字符引用. (exβ)
示例:我想将文字转换为
hello é β 水
成
hello é β 水
我在PHP中做这一切.我尝试了内置函数,iconv,整洁和组合,仍然无法获得可靠的解决方案.
这是我到目前为止所拥有的
// convert any characters fount in the entity table into HTML entities // do not double encode entities,do not mess with quotes // use UTF-8 as character encoding because the page submits UTF-8 $str = htmlentities($str,ENT_NOQUOTES,'UTF-8',false); //print $str."\n"; // convert text from UTF-8 to ISO-8859-1,// characters that cannot be converted will be converted to ? $str = utf8_decode($str); //print $str."\n"; // make string XML valid. // mainly it converts text entities into numeric entities. $opts = array( "output-xhtml" => true,"output-xml" => true,"show-body-only" => true,"numeric-entities" => true,"wrap" => 0,"indent" => false,"char-encoding" => 'latin1' ); $tidy = tidy_parse_string($str,$opts,'latin1'); tidy_clean_repair($tidy); $str = tidy_get_output($tidy); //print $str."\n";
您需要多字节支持.特别是,mb_encode_numericentity():
$convmap= array(0x0100,0xFFFF,0xFFFF); $encutf= mb_encode_numericentity($utf,$convmap,'UTF-8'); $iso= utf8_decode($encutf);
(这不会触及<,&,“等,所以你可能也需要预先使用htmlspecialchars().)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。