使用ODBC连接到MS Access时如何更改连接字符集?

这是我连接数据库的方式:</ p>

  $ dbh  =新PDO(“odbc:Driver = {Microsoft Access Driver(* .mdb,* .accdb)}; Dbq = C:\ xampp \ htdocs \ bd \ db \ icr.accdb; Uid = Admin”  ); 
</ code> </ pre>

在我的数据库中,我有数据和带有波兰字符的字段,因此仅当文件以ANSI编码时,sql查询才有效。 但我的整个网站都有字符集utf8(也有很多波兰字符)。 那么,有什么方法可以将数据库的字符集更改为utf8吗?</ p>

我正在尝试这样做:</ p>

  $ dbh-&gt;  exec(“set names utf8”); 
</ code> </ pre>

and this:</ p>

  $ dbh = new PDO(“  odbc:Driver = {Microsoft Access Driver(* .mdb,* .accdb)}; Dbq = C:\ xampp \ htdocs \ bd \ db \ icr.accdb; Uid = Admin“,null,null, 数组(
PDO :: ATTR_ERRMODE =&gt; PDO :: ERRMODE_EXCEPTION,
PDO :: MYSQL_ATTR_INIT_COMMAND =&gt;“SET NAMES utf8”
));
</ code> </ pre>

< 但是两者都没有用。 有什么想法吗?</ p>

//不要问我为什么用php访问数据库 - &gt; 我必须在我的大学项目中使用它:/ </ p>

编辑:
code:</ p>

 &lt;!DOCTYPE html PUBLIC“ -  /  / W3C // DTD XHTML 1.0 Strict // EN“”http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns =“http:// www。 w3.org/1999/xhtml"><head><meta http-equiv =“Content-Type”content =“text / html; charset = UTF-8”&gt;
&lt; body&gt;
&lt;? php
try {
// Connect
$ dbh = new PDO(“odbc:Driver = {Microsoft Access Driver(* .mdb,* .accdb)}; Dbq = C:\ xampp \ htdocs \ bd \ db \ icr.accdb; Uid = Admin“);
$ dbh-&gt; exec(”set names utf8“);
$ sql =”SELECT * FROM Miasta“;
$ myFile =”testFile .txt“;
$ fh = fopen($ myFile,'w')或死(”无法打开文件“);
foreach($ dbh-&gt; query($ sql)as $ row)
{
echo $ row ['Nazwa']。' - '。 $ row ['IDWojewództwa']。 '&lt; br /&gt;';
$ stringData = $ row ['Nazwa']。' - '。 $ row ['IDWojewództwa']。 '&lt; br /&gt;';
nfwrite($ fh,$ stringData);
}
nclclose($ fh);
/ 关闭数据库连接 /
$ dbh = null;

}
catch(PDOException $ e)
{
echo $ e-&gt; getMessage();
}
?&gt;
&lt; / body&gt;
&lt; / html&gt;
</ code > </ pre>
</ div>

展开原文

原文

This is how i connect with database:

$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\\xampp\\htdocs\\bd\\db\\icr.accdb;Uid=Admin");

In my database I have data and fields with polish characters, so sql query works only when file is encoded in ANSI. But my whole website have charset utf8 (also have lots of polish characters). So, there is any possible way to change charset of database to utf8?

I was trying this:

$dbh->exec("set names utf8");

and this:

$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\\xampp\\htdocs\\bd\\db\\icr.accdb;Uid=Admin", null, null, array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
  ));

but both didn't work. Any ideas?

//don't ask me why I use access database with php -> i have to use it in my university project :/

edit: code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<body>
<?php
try{
   // Connect
   $dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\\xampp\\htdocs\\bd\\db\\icr.accdb;Uid=Admin");
        $dbh->exec("set names utf8");
    $sql = "SELECT * FROM Miasta";
                        $myFile = "testFile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
    foreach ($dbh->query($sql) as $row)
        {
echo $row['Nazwa'] .' - '. $row['IDWojewództwa'] . '<br />';
$stringData = $row['Nazwa'] .' - '. $row['IDWojewództwa'] . '<br />';
fwrite($fh, $stringData);
        }
fclose($fh);
    /*** close the database connection ***/
    $dbh = null;
}
catch(PDOException $e)
    {
    echo $e->getMessage();
    }
?>
</body>
</html>

douzhuanqian8244
douzhuanqian8244 在Notepad++中,您可以轻松更改编码:)
接近 8 年之前 回复
dongpiao8821
dongpiao8821 第二件事是附上你的代码来质疑它更容易。
接近 8 年之前 回复
dqr91899
dqr91899 我不太确定它是utf-8你可以保存页面源但是使用另存为不复制到编辑器。
接近 8 年之前 回复
douyingmou1389
douyingmou1389 这是结果(文件有utf8编码)i.imgur.com/IP2Vh.png
接近 8 年之前 回复
doubingqi5829
doubingqi5829 您想使用$row数组中的错误索引。更改此echo$row['Nazwa']...以回显'<pre>';后续代码var_dump($行);echo'</pre>'您将看到每行从数据库返回的索引和值。使用var_dump()中的那些;
接近 8 年之前 回复
dongzhao2725
dongzhao2725 -是的,你有权利,文件有正确的修饰字符,这是我的代码示例:pastebin.com/xiJSPRj6,现在,如果文件是用ANSI编码的,有缺少抛光字符,当我将编码更改为UTF8时我得到了该错误:注意:未定义的索引:第14行的C:\xampp\htdocs\bd\conn.php中的IDWojewództwaWroc�aw-注意:第15行的C:\xampp\htdocs\bd\conn.php中的未定义索引:IDWojewództwa通知:未定义的索引:第14行华沙的C:\xampp\htdocs\bd\conn.php中的IDWojewództwa-注意:未定义的索引:IDWojewództwain
接近 8 年之前 回复
drozwmi5440
drozwmi5440 如果我没有错误访问数据库使用utf-8,因为像2000版本。您是否尝试选择一些带有抛光字符的行并将它们写入文件并使用utf-8编码在文本编辑器中打开它们?
接近 8 年之前 回复
douqian4411
douqian4411 虽然SETNAMES倾向于跨平台,但MYSQL_ATTR_INIT_COMMAND属性仅限MySQL。发出SETNAMESutf8时会发生什么?说它“不工作”并没有帮助我们。
接近 8 年之前 回复

3个回答



解决方案:</ p>

  $ tresc1。= iconv(“iso-8859-2  “,”utf-8“,$ row ['Nazwa']。' - '。$ row ['IDWojewodztwa']。'&lt; br /&gt;'); 
</ code> </ pre>
</ DIV>

展开原文

原文

solution:

$tresc1 .= iconv("iso-8859-2","utf-8", $row['Nazwa'] .' - '. $row['IDWojewodztwa'] . '<br />');

dqsong2010
dqsong2010 这个修复程序对我不起作用,我的问题是一样的,用同样的方式导入抛光字符的Access文件。 这是你改变你的代码吗? 没有其他的?
7 年多之前 回复



使用如下:</ p>

  $ dbh = new PDO(“odbc:Driver”  = {Microsoft Access Driver(* .mdb * .accdb)}; Dbq = path \; Uid = Admin“); 
$ dbh-&gt; exec(”set names utf8“);
</ code> </ pre>
</ div>

展开原文

原文

Use as follows:

$dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb  *.accdb)};Dbq=path\;Uid=Admin");
$dbh->exec("set names utf8");

展开原文

原文

You can refer following link. this may help you.>>http://docs.oracle.com/cd/E17952_01/refman-5.0-en/connector-odbc-configuration-connection-parameters.html

Also Find>>http://www.herongyang.com/JDBC/JDBC-ODBC-MS-Access-Connection.html For more programs

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐