a**y 发帖数: 335 | 1 情况:
有一个sql server 2005 express database, 建了一个odbc给php用
开始完全正常,后来发现sqlserver 2005里的中文在php下面没法正确解码
sqlserver里的中文Column是nvarchar类型,在asp.net下面用UTF-8显示完全正常。
在php下面返回的都是??????
试了好多次iconv, 无一成功,有些不再返回??????但也是乱码
比如:
echo $row["Title"];
echo iconv('UCS-2LE', 'UTF-8', $row["Title"]);
正确的方式应该是怎么样啊?
谢谢了 |
g***t 发帖数: 2278 | 2 你的输出的web文件的Head里的meta 的charset是不是UTF
【在 a**y 的大作中提到】 : 情况: : 有一个sql server 2005 express database, 建了一个odbc给php用 : 开始完全正常,后来发现sqlserver 2005里的中文在php下面没法正确解码 : sqlserver里的中文Column是nvarchar类型,在asp.net下面用UTF-8显示完全正常。 : 在php下面返回的都是?????? : 试了好多次iconv, 无一成功,有些不再返回??????但也是乱码 : 比如: : echo $row["Title"]; : echo iconv('UCS-2LE', 'UTF-8', $row["Title"]); : 正确的方式应该是怎么样啊?
|
a**y 发帖数: 335 | 3 是
【在 g***t 的大作中提到】 : 你的输出的web文件的Head里的meta 的charset是不是UTF
|
g***t 发帖数: 2278 | 4 用php的header("Content-Type: text/html; charset=utf-8")代替html中的看
看。
【在 a**y 的大作中提到】 : 是
|
g***t 发帖数: 2278 | 5 如果不行,再试试这个php code:
header("Content-Type: text/html; charset=gb2312")
【在 g***t 的大作中提到】 : 用php的header("Content-Type: text/html; charset=utf-8")代替html中的看 : 看。
|
o*o 发帖数: 5155 | 6 You should convert UTF-8 to UCS-2LE when you insert data into DB.
When fetching, do some kinds of casts to restore them.
【在 a**y 的大作中提到】 : 情况: : 有一个sql server 2005 express database, 建了一个odbc给php用 : 开始完全正常,后来发现sqlserver 2005里的中文在php下面没法正确解码 : sqlserver里的中文Column是nvarchar类型,在asp.net下面用UTF-8显示完全正常。 : 在php下面返回的都是?????? : 试了好多次iconv, 无一成功,有些不再返回??????但也是乱码 : 比如: : echo $row["Title"]; : echo iconv('UCS-2LE', 'UTF-8', $row["Title"]); : 正确的方式应该是怎么样啊?
|
a**y 发帖数: 335 | 7 多谢,不过还是不行啊。
我觉得这个不是HTML上charset的问题。因为如果只是HTML上有问题的话
我用IE换一个Encoding就行了。
这个问题是它从database读出来就已经是??????了
【在 g***t 的大作中提到】 : 如果不行,再试试这个php code: : header("Content-Type: text/html; charset=gb2312")
|
s*******e 发帖数: 4188 | 8 $row是怎么得到的?会不会读database的时候需要set encoding? |
a**y 发帖数: 335 | 9 哦?这应该怎么做?
$conn=odbc_connect("odbcname","user","pwd");
$sql="Select some_nvarchar from myTable where id=286";
$result=odbc_exec($conn,$sql);
$row=odbc_fetch_array($result);
【在 s*******e 的大作中提到】 : $row是怎么得到的?会不会读database的时候需要set encoding?
|
s*******e 发帖数: 4188 | 10 I might be totally wrong because I don't work in this area.
But the following, albeit old, seems to indicate there is a problem
supporting multi-byte character with PHP odbc.
http://bugs.php.net/bug.php?id=25972
http://bugs.php.net/bug.php?id=30043
Especially in the first link, it seems to indicate PHP MSSQL extension works.
【在 a**y 的大作中提到】 : 哦?这应该怎么做? : $conn=odbc_connect("odbcname","user","pwd"); : $sql="Select some_nvarchar from myTable where id=286"; : $result=odbc_exec($conn,$sql); : $row=odbc_fetch_array($result);
|