台灣最大程式設計社群網站
線上人數
896
 
會員總數:246274
討論主題:189809
歡迎您免費加入會員
討論區列表 >> CSS/HTML5/Bootstarp >> MS SQL存中文會變亂碼,存英文不會
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
MS SQL存中文會變亂碼,存英文不會
價值 : 100 QP  點閱數:27242 回應數:20
樓主

頭號掌門人
門外漢
0 43
1544 94
發送站內信

文字欄位:nickname_txt.text
在此欄位中輸入中文可以存入MS SQL,但會是亂碼,

如:%E5%B1%B1%E8%B1%AC%E9%AD%AF%E5%87%B1 <==此為亂碼字樣

而存入英文是正確的,沒有問題。

var sqlString:String = "update Player set playerid=" + "N" + "'" + nickname_txt.text + "'"
+ " from Player where userid=" + "'" + loaderInfo.parameters["username"] + "'" //讀取傳來的使用者帳號
+ " and userpassword=" + "'" + loaderInfo.parameters["userpassword"] + "'"; //讀取傳來的使用者密碼

此程式碼為SQL語法,想請問有沒有哪邊錯誤?

資料庫的欄位在 playerid這邊出現問題,
輸入中文會出現亂碼,而英文卻不會,

請問我應該如何讓輸入的中文可以正確顯示中文,而不是亂碼?

希望有人可以幫我解惑,感謝您。

搜尋相關Tags的文章: [ 亂碼 ] , [ MS SQL存中文亂碼 ] , [ 中文亂碼 ] , [ MS SQL無法存中文 ] ,
本篇文章發表於2014-03-16 23:00
1樓
回應

Allen
捐贈 VP 給 Allen 檢舉此回應
%E5%B1%B1%E8%B1%AC%E9%AD%AF%E5%87%B1
的中文是
山豬魯凱
至於為什麼會錯,就要看程式才知道了
本篇文章回覆於2014-03-16 23:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
不錯的參考

kevin
檢舉此回應
先解決你的 SQL Injection 問題
http://social.msdn.microsoft.com/Forums/zh-TW/f7a72d12-90a4-40cc-808a-625f1bdac72e/-sql-injection?forum=236
本篇文章回覆於2014-03-16 23:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

topcat
捐贈 VP 給 topcat 檢舉此回應
中文的型態
資料庫欄位應該設定為NChar, NVarChar, NText

請參考
http://www.dotblogs.com.tw/topcat/archive/2008/03/04/1144.aspx

另外,您的程式語法存在著危險
有多危險,可能讓你的資料庫資料被人刪光光
這是算好的...系統有備份,一發現還原回來損失不大
最狠的是那種每天幫您刪10筆
等您發現,想從備份救都不知道怎麼救(可能已經經過100天)您這100天,天天有備份,且知道被刪哪10筆才有辦法救回

請使用SqlParameter來處理帶入的資料。

^_^
本篇文章回覆於2014-03-17 00:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

陳醉欣
檢舉此回應



var sqlString:String = "update Player set playerid=" + "N" + "'" + System.Web.HttpUtility.UrlDecode(nickname_txt.text) + "'"
+ " from Player where userid=" + "'" + loaderInfo.parameters["username"] + "'" //讀取傳來的使用者帳號
+ " and userpassword=" + "'" + loaderInfo.parameters["userpassword"] + "'"; //讀取傳來的使用者密碼
本篇文章回覆於2014-03-17 11:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
不錯的參考

MIS2000 Lab
檢舉此回應
檢查您的資料庫,安裝時或是設定時,Collation是否設定正確?

談SQL Server的定序(Collation)
http://www.dotblogs.com.tw/jimmyyu/archive/2009/08/30/10320.aspx

msdn -- 設定或變更資料庫定序
http://technet.microsoft.com/zh-tw/library/ms175835.aspx
本篇文章回覆於2014-03-17 12:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
想請問樓主先

您的資料庫欄位設定為什麼樣的型態呢?

懇請樓主回應

感恩

^_^
本篇文章回覆於2014-03-17 17:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

頭號掌門人
檢舉此回應
回覆1樓
請問我還需要附上哪些程式碼呢?
這段SQL語法是寫在Action script中的程式碼,
將這樣的SQL語法傳入.aspx檔,並執行寫入資料庫的動作。

回覆2樓
關於SQL Injection只是想說先測試資料有無進資料庫,
所以才會使用文字欄位直接輸入資料進資料庫。

回覆3、6樓
此欄位的資料型態為nchar(10)

回覆4樓
此段程式碼我還在測試中,謝謝您的提供!

回覆5樓
此文章還在理解,我試著調整設定看看,謝謝您的提供!

本篇文章回覆於2014-03-17 19:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
如果是組字串,遇到NChar, NVarchar, NText這些欄位
請記得要加上N''

例如:


^_^

本篇文章回覆於2014-03-17 20:40
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
用Parameter就不必擔心有沒有加N''

^_^
本篇文章回覆於2014-03-17 20:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

頭號掌門人
檢舉此回應
回5樓
我的資料庫定序使用預設值:chinese_taiwan_stroke_CI_AS,因此我沒有做其他的更改。

回8、9樓
因為對flashaction的語法概念還不是很熟悉,所以是使用欄位輸入字串傳值,
而我在.aspx檔寫登入驗證的時候,是使用Parameter的,
以下僅供參考^^

本篇文章回覆於2014-03-17 21:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
不錯的參考

Bill
檢舉此回應
我覺得四樓說的可以參考, 應該是 UrlEncode, UrlDecode 的問題.
本篇文章回覆於2014-03-18 00:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
不錯的參考

topcat
捐贈 VP 給 topcat 檢舉此回應
建議,把存入的資料在存入之前先丟出來看看
也許您真的就是丟進去這樣的東西



如果真的是丟進這樣的東西,那麼就去思考,為何會轉成這樣?您是否有特別編碼過(Server.UrlEncode?Server.HtmlEncode?)
^.^a
本篇文章回覆於2014-03-18 08:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
不錯的參考

MIS2000 Lab
檢舉此回應
Action script是怎麼編碼的,您要不要換一個版面發問?

那邊才有熟悉Action script的前輩 :-)

這東西因為Apple不用他了,我想他的生命有如風中殘燭
等HTML5更普及,那就.....

本篇文章回覆於2014-03-18 15:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
作者回應

頭號掌門人
檢舉此回應
謝大家熱烈的給我寶貴的建議,

回11、12樓
因為SQL語法是寫在action script,
所以那樣的語法我沒有辦法使用,
但我也試著瞭解該問題的原因,謝謝!

回13樓
好的,我會去Action script板發問,謝謝^^

再次謝謝大家!
本篇文章回覆於2014-03-18 18:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
幫您轉版
^_^
本篇文章回覆於2014-03-18 23:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   

回覆
如要回應,請先登入.