GVKun编程网logo

php MsSql server时遇到的中文编码问题_PHP教程(php mysql 中文乱码)

3

本文将为您提供关于phpMsSqlserver时遇到的中文编码问题_PHP教程的详细介绍,我们还将为您解释phpmysql中文乱码的相关知识,同时,我们还将为您提供关于appservphp5.2.6連

本文将为您提供关于php MsSql server时遇到的中文编码问题_PHP教程的详细介绍,我们还将为您解释php mysql 中文乱码的相关知识,同时,我们还将为您提供关于appserv php 5.2.6 連接遠程 mssql, 問題解決、linux php freetds mssql 2008 簡體 繁體 共存 採用 UTF-8、lnmp 环境里安装 mssql 及 mssql 的 php 扩展、lua 访问 mssql 的驱动(好用的)是哪一个?对 mysql/pgsql 的支持不错,但希望先在 mssql 能用起来的实用信息。

本文目录一览:

php MsSql server时遇到的中文编码问题_PHP教程(php mysql 中文乱码)

php MsSql server时遇到的中文编码问题_PHP教程(php mysql 中文乱码)

但导到sqlserver 2005后,发现其中文编码只支持GB 和 UCS-2(unicode 16),所以直接在数据库中查询显示正确,但使用php的utf9编码显示时则全是乱码。
找了大量资料,什么使用mssql,freetds,odbc,ado或直接每次查询和写入都进行转码等建议都有。不过实际测试中,发现Ado这种方法是好用的。
代码如下:

复制代码 代码如下:






//print("The next line generates an error.
");
//printaline("PLEASE?");
//print("This will not be displayed due to the above error.");
?>


$conn = new COM("ADODB.Connection", NULL, CP_UTF8) or die("Cannot start ADO");
//access 数据库的打开方式
//$conn->Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=$db");
//$conn->Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=$db");
$conn->Open("Driver={SQL Server};Server={192.168.22.40};Database=sugarcrm_db;UID=sa;PWD=123456;") ;
// 执行查询并输出数据
$rs = $conn->Execute(''SELECT * FROM accounts'') or die ("error query");
?>



while (!$rs->EOF) {
echo '''';
echo '''';
echo '''';
echo '''';
$rs->MoveNext();
}
?>
ID Title
''. $rs->Fields[''id'']->Value .''''. $rs->Fields[''name'']->Value .''

// 释放资源
$rs->Close();
$conn->Close();
$rs = null;
$conn = null;

?>



查询结果(与使用sql server managment studio效果一样):
ID Title
114b0775-d9b2-db90-fcda-4a2f2cd7cdbd 鏍紡浼氱ぞ鏈潵鍟嗕簨 629487
1d270085-a588-9ea7-584c-4a2f2c8d1a5b Fabriqu茅 Interation氓l 79436
23 中文
36ea2575-fe34-61b0-e5ae-4a2f2c791d22 Berufskolleg f眉r Elektrotechnik 65790
3834261a-fd48-9d4a-be40-4a2f2c5fc256 Berufskolleg f眉r Elektrotechnik 529523
52c9652c-82c8-ec2b-72ae-4a2f2c3a58d6 鏍紡浼氱ぞ鏈潵鍟嗕簨 42138
78931a0e-f582-f406-8a56-4a2f2c3741b0 But茅e Torique 700010
989473f7-6b7b-fed3-12a1-4a2f2c320645 A.B.銈便偄銉栥儸銈ゃ兂銈?181212
b4579151-55cb-5ae4-a5f1-4a2f2c173b18 B眉nde-Mitte 203765
d72c42c9-9e1d-b926-d931-4a2f2c2a3100 Berufskolleg f眉r Elektrotechnik 27682
e97002f1-035f-91d3-4592-4a2f2f780e01 zhh

其中,23 ID的编码是GB2312的,其余是utf-8的。

而使用odbc则跟使用mssql_connect效果一样。

复制代码 代码如下:






//print("The next line generates an error.
");
//printaline("PLEASE?");
//print("This will not be displayed due to the above error.");
?>

//$conn = odbc_pconnect("myodbc", "sa", "cvttdev", 0);
//$connstr="DRIVER=Microsoft Access Driver (*.mdb);DBQ=".realpath("mydb.mdb");
$connstr="Driver={SQL Server};Server={192.168.22.40};Database=sugarcrm_db;UID=sa;PWD=123456;";
$connid=odbc_connect($connstr,"sa","cvttdev",SQL_CUR_USE_ODBC );


$query=odbc_do($connid,"select id,name from accounts");
?>



while(odbc_fetch_row($query))
{ echo '''';
$name = odbc_result($query,2);
$id=odbc_result($query,1);
echo '''';
echo '''';
echo '''';
}
?>
ID Title
''. $id .''''. $name .''


查询结果:

ID Title
114b0775-d9b2-db90-fcda-4a2f2cd7cdbd 株式会社未来商事 629487
1d270085-a588-9ea7-584c-4a2f2c8d1a5b Fabriqué Interationål 79436
23 ����
36ea2575-fe34-61b0-e5ae-4a2f2c791d22 Berufskolleg für Elektrotechnik 65790
3834261a-fd48-9d4a-be40-4a2f2c5fc256 Berufskolleg für Elektrotechnik 529523
52c9652c-82c8-ec2b-72ae-4a2f2c3a58d6 株式会社未来商事 42138
78931a0e-f582-f406-8a56-4a2f2c3741b0 Butée Torique 700010
989473f7-6b7b-fed3-12a1-4a2f2c320645 A.B.ケアブレイン��?181212
b4579151-55cb-5ae4-a5f1-4a2f2c173b18 Bünde-Mitte 203765
d72c42c9-9e1d-b926-d931-4a2f2c2a3100 Berufskolleg für Elektrotechnik 27682
e97002f1-035f-91d3-4592-4a2f2f780e01 zhh

因为odbc 也没有设置内码页的地方。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/320226.htmlTechArticle但导到sqlserver 2005后,发现其中文编码只支持GB 和 UCS-2(unicode 16),所以直接在数据库中查询显示正确,但使用php的utf9编码显示时则全是乱...

appserv php 5.2.6 連接遠程 mssql, 問題解決

appserv php 5.2.6 連接遠程 mssql, 問題解決

一開始,在 windows 下根本無法載入 mssql, 後來發現可以連線,結果跑出

 

Warning: mssql_connect() : message: Login failed for user ''(null)''. Reason: Not associated with a trusted SQL Server connection. 

 

就是什麼未信任連線,

 

搞了老半天,原來我用的 mssql 本身的認證,根本不用去 NT 認證!!

 

所以在 php.ini 裡有這麼一行

; Use NT authentication when connecting to the server
mssql.secure_connection = off

 

答案呼之欲出了!!

 

改 off 就好了!!

 

天啊!!

感謝網友

風雲珏悦

http://wyoojune.blog.163.com/blog/static/57093325201081794322977/

linux php freetds mssql 2008 簡體 繁體 共存 採用 UTF-8

linux php freetds mssql 2008 簡體 繁體 共存 採用 UTF-8

一般人都知道 mssql unicode 可以存什麼體,都 OK,

而你可以用 nvarchar 或者 nchar 就可以搞定!要不然數據庫裡,老是出現煩人的問號???

[環境介紹]

CentOS 6.x

(請全部 yum,php php-mssql freetds ....) 以下略

重點來了

請在 /etc/freetds.conf 改一下設定

tds version = 8.0   (不要懷疑,這個我找了好多參考,如果你採用 mssql 2000 以上,就用這個)

text size = 20971520  (這個大小不是重點,如果字數多,請調大)
client charset = UTF-8  (不用說,一定是 UTF-8)

當然可以自訂連線,不過我就省略了!!

好了,接下來的重頭戲,請確定以下幾件事情兒 >>>

一、是否網頁都存成 UTF-8

二、請用 mb_detect_encoding 去檢查,insert or update 的字串,是否為 UTF-8??

三、再檢查 select 出來之後的字串是否還是 UTF-8

OK, 如果你發現以上三點都正確,結果在數據庫裡顯現的還是?的話,那麼你要考慮以下的絕招了!

 update [資料表] set [欄位名稱]=N'' 应用推 '' where trade_no=''1111222333'';

對的,就是加個 N 就可以搞定,

我想,我哭了~搞太久了吧!!!!!

 

lnmp 环境里安装 mssql 及 mssql 的 php 扩展

lnmp 环境里安装 mssql 及 mssql 的 php 扩展

小活中用到 mssql, 于是在自己 lnmp 环境中安装各 mssql 数据库

步骤如下: 

源码编译安装

(1)下载 freetds-stable-0.91 源码: http://download.csdn.net/download/xhu_eternalcc/7457555(花了 4 积分,没有积分的找我要,微信 zmd1047773569)
          上传到根目录下的 download 文件中
(2)编译安装:
   # cd /download

           # tar zxvf freetds-stable.tgz(解压,)

 

   # cd freetds-0.91

   # 编译

            # ./configure --prefix=/usr/local/freetds --with-tdsver=8.0 --enable-msdblib

            # make

            # make install

            参数解释:

            安装 freetds 到目录 /usr/local/freetds:--prefix=/usr/local/freetds

            支持 MSSQL2000:--with-tdsver=8.0 --enable-msdblib

 

配置 FreeTds 的库文件

将 freetds 的库文件所在路径配置到 LD_LIBRARY_PATH 参数中:

$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/localfreetds/lib/:

或者直接把 etc/bashrc 的文件 bashrc 直接填写上  LD_LIBRARY_PATH=/usr/localfreetds/lib:$LD_LIBRARY_PATH

这么作的目的是为了避免加载 FreeTds 库文件加载不上的情况。

 

 

php 里安装 php-mssql 扩展:

cd /download (把php-mssql扩展下载到download目录里)
wget http://cn2.php.net/distributions/php-5.6.30.tar.gz (下载扩展文件,这里要根据你环境中运行的php版本选择对应的扩展版本下载,我这里php是5.6.30的 所以php-mssql扩展下载对应的版本) tar -zxvf php-5.6.30.tar.gz cd /php-5.6.30/ext/mssql
 /usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-mssql=/usr/local/freetds/ 

make
&& make install

编译安装后的结果 如下图

 

同时 mssql.so 也在 php 扩展文件下生成 (如下图)

 

 

 

 把 extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/mssql.so"  添加到 usr/local/php/lib/php.ini 中

 引用扩展后,重启 web 服务,通过 phpinfo 查看扩展 mssql 是否开启成功

重启 php   /usr/local/php/sbin/php-fpm reload  

重启 nginx  进入 nginx 可执行目录 sbin 下,输入命令./nginx -s reload 即可(或者 /application/nginx/sbin/nginx -s reload)

 

 

 

lua 访问 mssql 的驱动(好用的)是哪一个?对 mysql/pgsql 的支持不错,但希望先在 mssql 能用起来

lua 访问 mssql 的驱动(好用的)是哪一个?对 mysql/pgsql 的支持不错,但希望先在 mssql 能用起来

lua 访问 mssql 的驱动(好用的)是哪一个?

lua 对 mysql/pgsql 的支持不错,但对 mssql 的访问,总是不太顺

而目前希望先在 mssql 能用起来

我们今天的关于php MsSql server时遇到的中文编码问题_PHP教程php mysql 中文乱码的分享已经告一段落,感谢您的关注,如果您想了解更多关于appserv php 5.2.6 連接遠程 mssql, 問題解決、linux php freetds mssql 2008 簡體 繁體 共存 採用 UTF-8、lnmp 环境里安装 mssql 及 mssql 的 php 扩展、lua 访问 mssql 的驱动(好用的)是哪一个?对 mysql/pgsql 的支持不错,但希望先在 mssql 能用起来的相关信息,请在本站查询。

本文标签:

上一篇MSSQL Server的连接问题分析和解决(2)(sql server 连接mysql)

下一篇php mssql 分页SQL语句优化 持续影响_PHP教程(phpmysql分页显示)