簡體   English   中英

使用PHP插入Unicode字符 - > ODBC - > MS SQL?

[英]Inserting Unicode characters with PHP -> ODBC -> MS SQL?

我有以下代碼:

$sql = "update tbl_test set category = N'resumé';

echo $sql;

$rs=odbc_exec($conn,$sql);

其中$ conn是與MSSQL Server的DSN ODBC連接。 問題似乎是在PHP和MySQL(可能是ODBC?)之間的某個地方將unicode字符轉換為垃圾。 如果我將回顯的內容直接復制粘貼到企業管理器中,它會很好地插入到MS SQL中。 但是,如果我運行代碼,它總是作為resumé進入MSSSQL。 知道我在這里缺少什么嗎?

問題不是ODBC,而是PHP ...解決方案是對數據庫返回的字符串使用utf8_decode()。

如果您在Windows上運行PHP 5.3,使用PDO_ODBC和SQL Native Client,並且您的輸入文本是UTF-8,那么這應該自動運行。

我會在這里小心翼翼。 過去,在處理SQL Server和PHP集成時,我遇到過SQL Server使用的存儲空間是Unicode字符實際需要的3到5倍的情況。 具體取決於您連接數據庫的方式以及數據的編碼方式。 我的理解是,MSFT正在研究一種新的驅動程序(或者可能已經有一段時間了),它解決了這個問題,並且通常會改進PHP集成。 對於一些較舊的堆棧,您可能會遇到麻煩。 我建議查看數據庫中的數據大小,以驗證連接是否填充了數據。

雅各

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM