您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

PHP / MS Access进行字符编码难题

PHP / MS Access进行字符编码难题

这是我正在使用的PHP代码。我必须使用mb_convert_encoding(),这是PHP“ Multibyte String”(“ mbstring”)扩展名的一部分。

代码

<?PHP
// NB: save this PHP script as an ANSI text file, not a UTF-8 encoded file

$dbh = new PDO(
        'odbc:Driver={Microsoft Access Driver (*.mdb)};' .
        'Dbq=C:\\Users\\Public\\acc2000.mdb;' .
        'Uid=Admin;Pwd=;');

// this is our test case
$city = 'Montr茅al';
echo '$city: ' . $city . "\r\n";

// this is the UTF-8 "token" we'd get from the AJAX call...
$token = utf8_encode($city);
echo '$token: ' . $token . "\r\n";

// ...and here we convert to the Access_2000 character set
$win_token = mb_convert_encoding($token, 'Windows-1252', 'UTF-8');
echo '$win_token: ' . $win_token . "\r\n";

$sth = $dbh->prepare('SELECT * FROM Cities WHERE City = ?');
$sth->Execute(array($win_token));
$rst = $sth->fetchAll();
echo '$rst: ';
print_r($rst);

从Windows命令行运行时的结果:

C:\__tmp>\PHP\PHP odbcTest.PHP
$city: Montr螛al
$token: Montr鈹溾寪al
$win_token: Montr螛al
$rst: Array
(
    [0] => Array
        (
            [City] => Montr螛al
            [0] => Montr螛al
        )

)

请注意,命令行输出 本身 略有乱码,但至少SQL查询返回了结果…。

php 2022/1/1 18:26:25 有442人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶