在UTF-8数据库中,如何避免php程序中的垃圾字符问题?

~ 0 min
2016-02-26 10:05

此问题是由于php页中的数据是UTF-8编码引起的。当数据发送到驱动管理器时,驱动管理器发现DBMaster支持unicode ODBC函数,所以驱动管理器会把UTF-8数据当做本地数据处理(操作系统默认的语言编码,例如:日文系统中的Shift-JIS),并将数据转换为unicode。此时,转化的Unicode数据是错误的数据,所以它从DBMaster保存/取出时就会导致垃圾数据流入/流出。

解决方法:使用DBMaster ANSI驱动器可避免驱动管理器将UTF-8数据转化为Unicode数据。在安装DBMaster ANSI驱动器前,需对注册文件(dbmaster51_ansi_driver.reg)进行适当的设置更改。

ANSI驱动注册文件内容有:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Dbmaster 5.1 ANSI Driver]

"Driver"="d:\\Dbmaster\\5.1\\bin\\DMAPI51a.DLL"

"Setup"="d:\\Dbmaster\\5.1\\bin\\DMSET.DLL"

"APILevel"="1"

"ConnectFunctions"="YYN"

"CPTimeout"="60"

"DriverODBCVer"="03.00"

"FileUsage"="0"

"SQLLevel"="1"

步骤包括:

(1)     如果驱动名称不是5.1,把驱动器名称改为DBMaster 5.1 ANSI的驱动名称

(2)     修改驱动程序并设置安装目录

(3)     如果不是5.1版本,把dmapi51a.dll修改为dmapixxa.dll

因此,如果用户使用DBMaster 5.1,只需进行步骤(2)。

请从驱动管理器中删除DSN(默认为数据库名),并使用"DBMaster 5.1 ansi 驱动"重新注册DSN。安装dmapi51a.dll后,DBMaster ANSI驱动程序已经存在,只需注册它即可。DBMaster ANSI驱动器只删除Unicode ODBC函数。

平均分: 0 (0 投票)

你不能对该内容发表评论

标签