问号字符代替unicode在PHP和MS Access数据库在Windows


Question marks chars instead of unicode in PHP and MS Access database in Windows

我有一个Unicode字符的问题。我想要的是从php连接到Access mdb数据库,这已经完成了,并获得一些信息。一切都很好,直到我开始得到问号字符而不是unicode字符。

我在ASP中通过在每个页面的顶部添加以下代码来修复这个问题:

<%@LANGUAGE="JAVASCRIPT" CodePage=65001%>

然而,我找不到任何类似的PHP解决方案。有人遇到过这个问题吗?

记住,我在Windows中使用PHP,它必须连接到MS Access数据库。我还使用以下两个COMs来创建连接和记录集:

COM('ADODB.Connection')
COM('ADODB.Recordset')

编辑:

是否有任何关键字允许我将字符设置为UTF-8?这是我用于所有连接的连接字符串

"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=database.mdb;"

我尝试了以下两个,似乎MS Access根本不支持字符集。

"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=database.mdb;character set=ISO8859_1;"
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=database.mdb;Charset=ISO8859_1;"

这里需要帮助请....

感谢阿里

所以我猜没有人知道这个问题。所以我把我所有的数据从MS Access转移到MySql。我还将utf8设置为MySql中的主要集合。然后我在PHP中创建一个类来连接MySql,下面是代码的重要部分:

class MySqlConn
{
    private $m_dbConn;
    private $m_error;
    public function __construct( $location, $username, $password )
    {
        $this->m_error = FALSE;
        $this->m_dbConn = mysql_connect( $location, $username, $password );
        if( !$this->m_dbConn ) $this->m_error =  mysql_error();
        mysql_set_charset( 'utf8', $this->m_dbConn ); 
    }
.
.
.
}

这段代码的重要部分是__constrcut方法的最后一行,它指示了连接的字符集类型。如果你不设置,你总是得到问号字符而不是unicode字符。

希望它能帮助到某些人。

欢呼,阿里