Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP PDO ODBC to.mdb提供了什么?????阿拉伯字符_Php_Ms Access_Pdo_Odbc_Arabic - Fatal编程技术网

PHP PDO ODBC to.mdb提供了什么?????阿拉伯字符

PHP PDO ODBC to.mdb提供了什么?????阿拉伯字符,php,ms-access,pdo,odbc,arabic,Php,Ms Access,Pdo,Odbc,Arabic,我的页面中有以下代码: <meta http-equiv="Content-Language" content="ar-lb"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <?php $db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=".realpath($dbName).";charset=

我的页面中有以下代码:

<meta http-equiv="Content-Language" content="ar-lb">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<?php
$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=".realpath($dbName).";charset=utf-8");
?>

当我执行一个普通的SELECT查询时,我得到????用于阿拉伯语字符。 我已经通过许多问题和帖子,但我很少发现我的情况,没有任何帮助。我尝试了COM,但我得到了一些错误,说这个类不存在,我在php.ini中找不到它

我需要从.mdb表中获取数据到我的MySQL数据库

编辑:我能解决我的问题//////////////////////// 这是我使用的代码:

<meta http-equiv="Content-Language" content="ar-lb">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<?php
$db_path = "example.mdb";
$db_path = realpath($db_path);
$db_dir = dirname($db_path);
$constr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=".$db_path.";DefaultDir=".$db_dir.";";
$link = new COM("ADODB.Connection", NULL, CP_UTF8);
$link->Open($constr);
?>


起初COM没有任何帮助,但诀窍是将这两个参数添加到COM构造函数…

在MySQL ODBC驱动程序配置中指定字符集:

!![Windows键][旧WinLogo]→键入ODBC→进入

  • [oldwinlogo]:

  • 双击您的
    MySQL ODBC Unicode驱动程序

  • 单击详细信息>>

  • 选择适当的
    字符集


如果这不能解决问题,那么它可能与MySQL数据库中的数据类型有关。例如,
BLOB
显然不能很好地处理阿拉伯语字符。更多信息请参见。

指定MySQL ODBC驱动程序配置中的字符集:

!![Windows键][旧WinLogo]→键入ODBC→进入

  • [oldwinlogo]:

  • 双击您的
    MySQL ODBC Unicode驱动程序

  • 单击详细信息>>

  • 选择适当的
    字符集


如果这不能解决问题,那么它可能与MySQL数据库中的数据类型有关。例如,
BLOB
显然不能很好地处理阿拉伯语字符。更多信息。

我的问题是,我从.mdb文件中获得的阿拉伯语值似乎是???我的MySQL数据库可以使用它们(我使用mysqli_uu函数进行MySQL连接),而正确的解决方案确实是使用Access迁移表,并使用MySQL ODBC Unicode驱动程序,这不是OP所要求的。他问为什么Access ODBC驱动程序不工作(这很难排除故障,特别是因为mdb文件使用系统编码,所以我们不知道文件是如何编码的,这使得这个问题几乎无法回答)。请注意,他的例子很清楚,OP实际上应该询问如何将带有阿拉伯字符的表从Access迁移到MySQL。@Erik re:XY问题。。。有趣的是,我知道这会成为一个问题。谢谢分享。我的问题是,我从.mdb文件中获得的阿拉伯语值似乎是???我的MySQL数据库可以使用它们(我使用mysqli_uu函数进行MySQL连接),而正确的解决方案确实是使用Access迁移表,并使用MySQL ODBC Unicode驱动程序,这不是OP所要求的。他问为什么Access ODBC驱动程序不工作(这很难排除故障,特别是因为mdb文件使用系统编码,所以我们不知道文件是如何编码的,这使得这个问题几乎无法回答)。请注意,他的例子很清楚,OP实际上应该询问如何将带有阿拉伯字符的表从Access迁移到MySQL。@Erik re:XY问题。。。有趣的是,我知道这会成为一个问题。感谢您的共享。根据创建文件的Access版本,文件可能是UTF-8编码的,也可能不是UTF-8编码的,如果这不起作用,则可能不是。查看以更改表上的编码。如果不是UTF-8,则是创建文件的系统编码,虽然您可以使用UTF-8,但更好的选择是将其转换为UTF-8(或者仅使用Access本身移动表,使用ashleedawg的建议配置MySQL驱动程序),具体取决于创建文件的Access版本,它可能是UTF-8编码的,也可能不是UTF-8编码的,如果这不起作用,它很可能不起作用。查看以更改表上的编码。如果不是UTF-8,则是创建文件的系统编码,虽然您可以使用UTF-8,但更好的选择是将其转换为UTF-8(或者使用Access本身移动表,使用ashleedawg的建议配置MySQL驱动程序)