我有一个HTML,它是在ISO8859-1中设置的.现在,我想将UCS-2字符串转换为UTF-8字符串;这个输出UTF-8将打印到<input type="text" name="out" />中。而且,我的HTML 绝不能更改字符集。
我读过以下问题:
我试图通过以下代码来解决我的问题:
<?php $str = $_POST['str']; ?>
<form method="post">
<input type="text" name="str" value="<?php echo $str; ?>" />
<input type="submit" />
</form>
<hr /><input type="text" name="out" value="<?php echo mb_convert_encoding($str, 'UCS-2', 'UTF-8'); ?>" />当我在UCS-2中输入一个单词时,比如:Việt Nam,它将返回:�V�i�&�#�7�8�7�9�;�t� �N�a�m。为什么?
有没有办法将UCS-2转换成UTF-8,然后输出到<input type="text" name="out" />?
发布于 2015-08-04 12:58:57
UCS-2似乎与你的问题完全无关。在任何步骤都不涉及UCS-2。
当您有一个使用ISO-8859-1字符集(或Unicode的任何其他子集)的网站或表单,并且输入一个不能在此字符集中编码的字符时,浏览器将将该字符编码为HTML实体,并将包含HTML实体的ISO-8859-1编码数据发送到您的服务器。如果您稍微斜视一下:ệ,您可以在输出中看到这一点。
您可以直接将该实体输出回浏览器以获得所需的字符。如果要将此HTML实体转换为实际字符(例如,UTF-8 ),则需要对其进行HTML解码:
echo html_entity_decode($str, ENT_COMPAT | ENT_HTML401, 'UTF-8');https://stackoverflow.com/questions/31715579
复制相似问题