2012-04-27 196 views
2

我实际上有2页,一个在ISO中,另一个在UTF8中。我没有可能改变他们而不会大乱。php编码问题(utf8到iso)

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

我收到ISO页面上的数据,我无法将其置于可读的字符中。

有没有解决方案?

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

+1

ISO可以意味着很多。具体哪个ISO字符集?另外,我建议你将ISO页面迁移到UTF-8,这应该是可以的,以兼容的方式完成和规范化跨页面的数据管理。 – hakre 2012-04-27 07:30:57

+0

当我第一次接受这个项目时,我尝试了一次将ISO转换为UTF8,但是它把插入到数据库中的所有信息搞乱了,这是一团糟,我需要回头。那这样做dev的不知道,我们可以把UTF8数据库:-(它是ISO-8859-1 – Shadowbob 2012-04-27 08:06:09

+0

你将永远无法为中国字符ISO-8859-1存储到数据库中。 – hakre 2012-04-27 08:14:52

回答

2

如果你可以修改发送页面,添加以下到您的窗体标签:

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

插入第二页正确的编码。欲了解更多信息,请看看MDN

+0

它的工作完美!对不起,我不能+1你的答案,但我保证当我有权利我会+1你:​​-)非常感谢 – Shadowbob 2012-04-27 08:02:32

1

除了给予形式的accept-target属性,另一种选择是将数据转换接收页:

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

参考文档iconv为如果输入数据无法在目标字符集中表示,则会影响该函数的行为。

0

您可以使用此功能将字符串从当前编码转换到你想要的目标编码:

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