【问题标题】:How to convert "UCS-2" to "UTF-8" by this way, with HTML, in PHP?如何通过这种方式在 PHP 中使用 HTML 将“UCS-2”转换为“UTF-8”?
【发布时间】:2015-07-30 05:11:00
【问题描述】:

我有一个 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;然后,输出到&lt;input type="text" name="out" /&gt;?

【问题讨论】:

  • 1) 您的mb_convert_encoding 调用将 UTF-8 转换为 UCS-2。这听起来不像你想要的。 2) 我不清楚你为什么需要或期望你可以通过 ISO-8859-1 传输 UTF-8,为什么这里需要 UCS-2,或者你如何“输入 UCS-2”。请澄清很多。
  • 您在 UCS-2 中究竟是如何输入一个单词的?
  • 所以您只是在浏览器的文本字段中输入?你为什么认为这会产生 UCS-2?

标签: php html utf-8 character-encoding ucs2


【解决方案1】:

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

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

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

echo html_entity_decode($str, ENT_COMPAT | ENT_HTML401, 'UTF-8');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-29
    • 2016-08-14
    • 1970-01-01
    • 2014-04-18
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 2018-05-01
    相关资源
    最近更新 更多