【发布时间】:2013-04-26 10:03:59
【问题描述】:
注意这是 MS Access 2000,这个 PHP 文件是通过 ajax 调用来调用的...
在这个 PHP 文件的开头我放了
ini_set('default_charset', 'utf-8');
下面的 $token 来自这些行
$search_string = $_GET[ 'search_string' ];
$search_tokens = explode( " ", $search_string );
$token = $search_tokens[ 0 ];
当我有一个没有法语重音字符的“令牌”时,这可以正常工作:
$sql="SELECT * FROM tblFrEng WHERE French = '$token'";
echo "=== SQL is $sql<br>";
$sth = $dbh->prepare( $sql );
$sth->execute();
但是虽然 SQL 带有像“référé”这样的法语单词看起来不错(像这样):
=== SQL is SELECT * FROM tblFrEng WHERE French = 'référé'
不幸的是,查询返回 0 行......即使它应该返回记录......所以在我看来,字符编码可能是问题所在
注意,我也尝试使用 utf8_encode 进行编码,但正如所指出的那样,这没有任何意义,并且使 SQL 字符串出现乱码...
【问题讨论】:
-
你从哪里得到这个
$token? -
token 取自 GET 字符串...我将把这些行放入
-
我觉得你文件的编码不是UTF8...
-
在这里调用
utf8_encode()没有意义。该函数将 ISO-8859-1 转换为 UTF-8。$token应该已经是 UTF-8 了。如果你得到了什么,那么可能是数据库中的文本编码不正确。 -
@cleong 谢谢...这是有道理的。知道如何解决不正确的 dbase 编码问题吗?问题是我已经有另一个程序,用 Jython(即 Java)编写,它管理这个查找函数(在这个数据库上)没有任何问题......包括法语重音字符。
标签: php sql ms-access character-encoding