2013-03-07 76 views
7

將丹麥語字符插入到sql server時,將其插入到具有nvarchar數據類型的字段中時,丹麥語字符格式不正確。例如:brændstof被轉換爲brÃndndstof。當它直接從sql server查詢窗口中運行正常。我嘗試給該字段提供不同的排序規則(Latin1_Genaral,Danish_Greenlandic_100_CI_AI,Danish_Norwegian_CI_AI等)有沒有辦法實現這一點。我正在使用Microsoft Drivers 3.0 for PHP for SQL Server。請幫助將丹麥語字符從PHP插入到sql服務器

+3

這聽起來像一個普通的UTF8/Unicode的問題。我自己只使用MySQL,但我相信你可以在MySQL中指定一行中的*排序規則*(字符集)。 [這是MySQL/PHP中所有步驟的指南,以確保一切都是正確的字符集 - 我相信你可以使用MSSQL的這些信息](http://tympanus.net/codrops/ 2009/08/31 /解決-php-mysql-utf-8-issues /) – h2ooooooo 2013-03-07 13:25:02

+0

nitpickery,但「排序規則」不是一個字符集相同。 – troelskn 2013-03-07 13:50:55

+0

請澄清這個含糊但卻很關鍵的句子:'當它直接從sql server查詢窗口運行正常時.' – Tim 2013-03-07 13:53:45

回答

2

我用周圍的工作,只是HTML編碼的丹麥串insering到表之前,並且在顯示剛剛解碼回

2

而不是文字'æ',使用它的CHAR等價值並且看看會發生什麼。

1

正如猜測這裏:

我認爲這個問題是在PHP的一部分,而不是在MySQL的部分(我看你使用了一些編碼專門爲丹麥的那場)。甚至更早。曾試圖在HTML頁面上放置'ä'(真實的字符,而不是ä)?它會轉換爲其他字符,例如您的問題中的示例。所以,我在這裏看到兩種可能性:

  • 用戶輸入不正確的是URL編碼
  • PHP使用了一些編碼,不支持丹麥的字符。

或許3 & 4(不太可能):

  • 的燒烤到達客戶端不正確(如果重新發送一些字符到服務器,我不知道,如果是這樣的話)
  • 用戶代理轉換的字符,從而發送畸形字符的服務器(或顯示他們是錯的,這意味着正確的字符是在服務器上,但你不能用你的瀏覽器中查看它們)
2

我現在不怎麼說丹麥信件,但我在SQL SERVER中遇到了亞美尼亞人的問題。我解決了這個問題。

insert into sometable(field) values(N'myArmenianText');