0

我有一个 HTML 表单,它在ISO-8859-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; ?>" />
&nbsp;&nbsp;<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�&amp;�#�7�8�7�9�;�t� �N�a�m。为什么?

有没有办法通过 PHP 将 UCS-2 转换为 UTF-8;然后,输出到<input type="text" name="out" />?

4

1 回答 1

0

UCS-2 似乎与您的问题完全无关。任何步骤都不涉及UCS-2。

当您有一个使用 ISO-8859-1 字符集(或任何其他Unicode子集)的网站或表单,并且您输入的字符无法在此字符集中进行编码时,浏览器会将字符编码为 HTML 实体而是将包含 HTML 实体的 ISO-8859-1 编码数据发送到您的服务器。如果您眯起眼睛,您可以在输出中看到这一点&#7879;

您可以直接将此实体输出回浏览器以获取所需的字符。如果您想将此 HTML 实体转换为以 UTF-8 编码的实际字符,则需要对其进行 HTML 解码:

echo html_entity_decode($str, ENT_COMPAT | ENT_HTML401, 'UTF-8');
于 2015-08-04T12:58:57.857 回答