求教 PHP+mssql+utf-8(韩文 维文 ……)

时间:2021-06-09 17:15:49
数据

1 시험
2 鞁滍棙


ID 1 为在查询分析器里面运行 


Insert Into TestTab (Tname) values (N'시험')";


ID 2 为 在php插入的数据


$tVal = "시험";
$sql = "Insert Into TestTab (Tname) values (N'$tVal')";
mssql_query($sql);


求教,PHP + mssql + UTF8(包含韩文 维文) 如何能够正确操作mssql 

14 个解决方案

#1


可能是编码问题吧,
首先你可以先把php and sql数据库都设成utf-8编码,然后记得在数据操作之前加个setnames utf8

#2


不太了解你的这个N函数是啥意思.

可以将韩文先转成utf8的,再存入.
iconv('enu-kr', 'utf-8', '시험');

#3


引用 1 楼 phpBoy005 的回复:
可能是编码问题吧, 
首先你可以先把php and sql数据库都设成utf-8编码,然后记得在数据操作之前加个setnames utf8 



文件都是utf-8的

mssql 好像不支持 setnames

#4


引用 2 楼 jakey9826 的回复:
不太了解你的这个N函数是啥意思. 

可以将韩文先转成utf8的,再存入. 
iconv('enu-kr', 'utf-8', '시험');


我的页面本身就是 UTF8

Tname 字段 为 nvarchar
我的代码

$internalEncoding = "UTF-8";
$outputEncoding = "UTF-8";
$inputEncoding = "UTF-8";
iconv_set_encoding("internal_encoding", $internalEncoding);
iconv_set_encoding("output_encoding", $outputEncoding);
iconv_set_encoding("input_encoding", $inputEncoding);
ob_start("ob_iconv_handler");
header("Content-type: text/html; charset=UTF-8");
$conn =  mssql_pconnect($dbSet['dbHost'] . ',' . $dbSet['dbPort'], $dbSet['dbUser'], $dbSet['dbPass']) or die('No Conn');
mssql_select_db($dbSet['dbName'], $conn);
$tVal = "시험";
$sql = "Insert Into TestTab (Tname) values (N'$tVal')";
mssql_query($sql);

#5


页面编码是不是utf-8.<meta ...

#6


iconv 转 GBK 编码.

MSSQL 的SQL语句 能直接支持 UTF8吗? 好象不可以吧?

看微软官方php操作MSSQL 都是用 iconv 转的.

丫太无语了....

不喜欢,我还是喜欢MySQL

#7


iconv 转 GBK 编码.

MSSQL 的SQL语句 能直接支持 UTF8吗? 好象不可以吧?

看微软官方php操作MSSQL 都是用 iconv 转的.

丫太无语了....

不喜欢,我还是喜欢MySQL

#8


http://borland.mblogger.cn/nothingdone/posts/9036.aspx#FeedBack
帮你找个解决办法,你可以尝试一下.

#9


OK,我测试下
谢了,如果OK,我就结贴了

#10


不行
不支持5.2 版本,而且操作方法都得用他的方法了
:(

#11


几年前就听说sql server数据库的utf-8编码问题了。

也不知道如何是好哎。

#12


up

#13


引用 10 楼 shjxj 的回复:
不行 
不支持5.2 版本,而且操作方法都得用他的方法了 
:(

哪没有啥好办法了.基本上很少用mssql.

#14


算了,看来是米有办法了
结贴

#1


可能是编码问题吧,
首先你可以先把php and sql数据库都设成utf-8编码,然后记得在数据操作之前加个setnames utf8

#2


不太了解你的这个N函数是啥意思.

可以将韩文先转成utf8的,再存入.
iconv('enu-kr', 'utf-8', '시험');

#3


引用 1 楼 phpBoy005 的回复:
可能是编码问题吧, 
首先你可以先把php and sql数据库都设成utf-8编码,然后记得在数据操作之前加个setnames utf8 



文件都是utf-8的

mssql 好像不支持 setnames

#4


引用 2 楼 jakey9826 的回复:
不太了解你的这个N函数是啥意思. 

可以将韩文先转成utf8的,再存入. 
iconv('enu-kr', 'utf-8', '시험');


我的页面本身就是 UTF8

Tname 字段 为 nvarchar
我的代码

$internalEncoding = "UTF-8";
$outputEncoding = "UTF-8";
$inputEncoding = "UTF-8";
iconv_set_encoding("internal_encoding", $internalEncoding);
iconv_set_encoding("output_encoding", $outputEncoding);
iconv_set_encoding("input_encoding", $inputEncoding);
ob_start("ob_iconv_handler");
header("Content-type: text/html; charset=UTF-8");
$conn =  mssql_pconnect($dbSet['dbHost'] . ',' . $dbSet['dbPort'], $dbSet['dbUser'], $dbSet['dbPass']) or die('No Conn');
mssql_select_db($dbSet['dbName'], $conn);
$tVal = "시험";
$sql = "Insert Into TestTab (Tname) values (N'$tVal')";
mssql_query($sql);

#5


页面编码是不是utf-8.<meta ...

#6


iconv 转 GBK 编码.

MSSQL 的SQL语句 能直接支持 UTF8吗? 好象不可以吧?

看微软官方php操作MSSQL 都是用 iconv 转的.

丫太无语了....

不喜欢,我还是喜欢MySQL

#7


iconv 转 GBK 编码.

MSSQL 的SQL语句 能直接支持 UTF8吗? 好象不可以吧?

看微软官方php操作MSSQL 都是用 iconv 转的.

丫太无语了....

不喜欢,我还是喜欢MySQL

#8


http://borland.mblogger.cn/nothingdone/posts/9036.aspx#FeedBack
帮你找个解决办法,你可以尝试一下.

#9


OK,我测试下
谢了,如果OK,我就结贴了

#10


不行
不支持5.2 版本,而且操作方法都得用他的方法了
:(

#11


几年前就听说sql server数据库的utf-8编码问题了。

也不知道如何是好哎。

#12


up

#13


引用 10 楼 shjxj 的回复:
不行 
不支持5.2 版本,而且操作方法都得用他的方法了 
:(

哪没有啥好办法了.基本上很少用mssql.

#14


算了,看来是米有办法了
结贴