我继承了一个MySQL数据库,其中包含一个名为Description of text text和collation latin1_swedish_ci
的字段。
此字段存在的问题是它包含带有一些Unicode字符的utf-8数据,例如:字符733等。有时这个字符也存在于HTML编码的字段“&#733”中。
我正在尝试读取该表并将数据导出为CSV文件,我需要将此字符表示为双引号。
阅读HTML编码字符非常简单。但是,在我可以对它执行任何操作之前,实际的Unicode字符似乎会转换为utf-8,从而产生“?”。
如何读取Unicode字符733(U + 02DD),识别并转换它?
这是代码的简化版(未经测试)。
<?
$testconn=odbc_connect ("TESTLIB", "......", "......");
$query="SELECT Description FROM TestTable";
$rsWeb=mysql_query($query));
$WebRow=mysql_fetch_row($rsWeb));
$Desc = $WebRow[0];
$Desc = str_replace('"','""',$Desc);
fwrite($output,"\"".$Desc."\",\r\n");
%>
答案 0 :(得分:1)
连接到SQL服务器时,还将charset设置为utf-8:
http://php.net/manual/en/mysqli.set-charset.php
$mysqli->set_charset("utf8");
答案 1 :(得分:0)
我认为你的连接字符集不是utf8,这就是字符转换为'?'的原因。
阅读本文:http://dev.mysql.com/doc/refman/5.1/en/charset-connection.html
发布查询结果: 显示'char%';
等变量答案 2 :(得分:0)
你真的应该只在数据库中放入非实体(Unicode)版本,并对其余部分进行实体解码。但是,当您想在MySQL中使用UTF-8时,需要记住以下几点:
此外,如果您要输出HTML页面,那么它也应该包含UTF8字符集。如果一切正确,UTF8字符应该可以正常显示。
祝你好运!