我有需要在各種語言和字母來保存數據的數據庫。我使用默認的拉丁語排序規則,但所有文本字段都是Unicode類型(nchar,nvarchar)。韓國(和其他Unicode)字符R2不正確的查詢結果顯示
我可以高興地插入和使用我的前端應用程序從數據庫中檢索Unicode數據,但如果我認爲使用SSMS中的數據,然後我看到的是亂碼!
我可以插入這樣的:
극단적으로
然後看起來像這樣在SSMS:
극단ì 으로
,而是由我的前端應用程序,這個檢索:
극단적으로
現在顯然數據本身存儲正常,但爲什麼SSMS將其顯示爲亂碼?有趣的是,如果我使用SSMS直接編輯數據,並在粘貼上面它,然後將其顯示爲這個(編輯:原來的顯示,而不是箱子的正確的文本轉換自grid to text aleviates我的問題,這部分的結果。):
□□□□□
但是,如果我複製並粘貼到文本編輯器弄出來的:
극단적으로
在嘗試,看看這只是SSMS行爲不端(/由我配置錯誤)我使用MS Access並將其鏈接到我的SQL Server數據庫,但它顯示相同的gibbe像SQL Server一樣。
這個數據庫將容納所有的web應用程序的靜態文本,所以對我來說,能夠查看和編輯容易,不容易完成的數據時,所有你能看到的是這是很重要的:
극단ì 으로
任何建議將是巨大的,我真的停留在此。
編輯
這是我的數據插入,這是我在PHP此刻做的一個例子:
$con = sqlsrv_connect("(local)", array("Database" => "myDatabase"));
$SQL = "INSERT INTO TableName (col1,col2) VALUES (N'극단적으로',N'극단적으로')";
sqlsrv_query($con,$SQL);
這是我的數據檢索的例子:
$SQL = "SELECT col1,col2 FROM TableName";
$rs = sqlsrv_query($con,$SQL);
while($row = sqlsrv_fetch_array($rs)){
echo $row["col1"]." ".$row["col2"]."\n";
}
此結果由PHP構成:
극단적으로 극단적으로
但如果我在該表上運行一個選擇的數據顯示爲SSMS的輸出窗口胡言亂語。
也許增加一個如何在客戶端存儲和檢索數據的例子? – Andomar
@Andomar在php中只使用SQL查詢,但直接在SSMS中運行查詢具有相同的效果,除了'SELECT'之外,您在SSMS中獲取亂碼並在php中輸出正確。我不確定這會有幫助,但我會在一秒鐘內添加一個示例。 – Ben
如果在編碼和解碼過程中犯了同樣的錯誤,則兩者可以抵消。但是SQL Server只會看到錯誤編碼的版本。 – Andomar