PHP 编码问题(UTF8 到 ISO)


php encoding issue (utf8 to iso)

>我实际上有 2 页,一页是 ISO 的,另一页是 UTF8 的。我不可能在不弄得一团糟的情况下改变它们。

UTF8 页面中有一个表单,用于将中文字符的 GET 数据发送到 ISO 页面。
网址看起来像search=文員 UTF8。

我在 ISO 页面上收到数据,但我无法将其放入可读字符中。

有解决方案吗?

也许我应该在 Javascript 中转换 UTF8 页面上的数据吗?

如果可以修改发送页面,请将以下内容添加到表单标记中:

<form accept-charset="ISO-...">

为第二页插入正确的编码。有关更多信息,请查看 MDN

除了给表单一个accept-target属性之外,另一种选择是转换接收页面上的数据:

$data = $_POST['data']; // for example
$data = iconv('UTF-8', 'ISO-ENCODING-HERE', $data);

有关在输入数据无法在目标字符集中表示时影响函数行为的选项,请参阅文档以获取iconv

您可以使用此函数将字符串从当前编码转换为所需的目标编码:

function correct_encoding($text, $target_encoding='UTF-8') {
    $current_encoding = mb_detect_encoding($text, 'auto');
    $text = iconv($current_encoding, $target_encoding, $text);
    return $text;
}