服務器在國外,中文添加Sqlserver裏變成亂碼

頁面中文內容提交後添加到數據庫之前已變成亂碼,Webconfig和頁面的編碼根據論壇裏的各種方法都設置過結果只是亂碼不一樣。有沒有解決過這種問題的朋友幫幫忙。服務器那邊的編碼好像是iso-8859-1。  
---------------------------------------------------------------  
 
對,n開頭的  
1.nchar(n)      :  存儲固定長度的雙字節數據  
2.nvarchar(n):  存儲可變長度的雙字節數據  
3.ntext            :  長度走過4000字符時用  
 
---------------------------------------------------------------  
你的插入語句應該類似下面:  
1、如果使用的是拼接字符串的方式那麼在插入的數據前面應該加N'插入的值'。 
複製  保存
INSERT  INTO  table1  (feild1)  
VALUES  (N'插入的值')
  
2、如果使用的是SqlParameter的方式則需要指定參數類型爲對應的n型,也就是要制定爲Nvarchar等類型即可。  
 
如果它的服務器不支持unicode那麼你怎麼做都應該沒有用,這種情況下自己做編碼轉換簡直不現實。  
---------------------------------------------------------------  
 
我覺得這樣的編碼問題在數據庫之外解決可能稍好些。  
你可以用文化定義,如:  
複製  保存
using  System.Globalization;  

//定義文化並將傳進來的字符(隨便舉了個例子)轉換成中國大陸文化的字符格式(GB)
CultureInfo CultureInfoString = new CultureInfo("zh-CN");
string originstring, parsedstring;
originstring = "aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbccccccccccccccc46783@@#Tfdfe";
parsedstring = originstring.ToString(CultureInfoString);
  
           
你也可以用Convert.ToEncoding()或者安裝國際化字體(約200MB)的方法來解決,但都必須在計算機上安裝編碼支持文件纔可以在基於.NETFRAMEWORK的程序中編碼,如國標可以去http://www.microsoft.com/china/windows2000/downloads/18030.asp下載.  
同時,你還可以在程序代碼的線程中規定界面文化和當前文化設置來讓各個客戶端從服務器獲取到你指定的地區文化值:  
複製  保存
using  System.Globalization;  
using  System.Threading;  
.........  

Threading.CurrentThread.CultureUICulture = new CultureInfo("en");
Threading.CurrentThread.CurrentCulture = new CultureInfo("zh-CN");

 
以上代碼將當前UI文化定義爲英文,當前文化設置爲中文,如果你的用戶全用中文.你也可以都設成中文.  
其他有不明白的看看MSDN相關的C#字符串國際化方面的介紹,說的很詳細.  
 
服務器不可能不支持unicode,全部寫成unicode就可以了。文件字符集也是unicode。  
insert  into  要加上N,  或者寫成存儲過程。  
 
語言包是必要的,要是英文系統上沒有中文字體的話就沒法顯示中文了 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章