我在utf-8 mysql DB中有这个字符串: “Pruebádeeñes”
当我像普通文本一样打印时,一切正常,但是如果我在输入,文本区域等中加载相同的字段,它就变成:“Pruebádeeñes”
我该如何解决这个问题? =(
答案 0 :(得分:1)
首先,我建议阅读本文:http://www.joelonsoftware.com/articles/Unicode.html(绝对最低每个软件开发人员绝对必须知道关于Unicode和字符集(没有借口!)Joel Spolsky)非常有用。
然后,如果它是MySQL,您可以通过“SET NAMES'utf8'”在连接中设置默认字符集。例如在Zend_Framework中($ db-> query(“SET NAMES'utf8'”);)
另一个选项是在数据中添加过滤器,然后再将其打印到屏幕上。我做了两个手工功能......
function utf8encode ($subject, $action = '//TRANSLIT')
{
if ( @iconv( 'UTF-8', "UTF-8{$action}", $subject) == $subject ) {
#-- the value it's utf8
} else {
$subject = utf8_encode ($subject);
}
return $subject;
}
function utf8decode ($subject, $action = '//TRANSLIT')
{
if ( @iconv( 'UTF-8', "UTF-8{$action}", $subject) == $subject ){
$subject = utf8_decode ($subject);
} else {
#-- the value is probably ISO-8859-1
}
return $subject;
}