none
如何檢查輸入的字串中的字是否能在SQL某個定序下儲存 RRS feed

  • 問題

  • 我用VB.NET寫了一個SOCKET SERVER連MSSQL 2008的

    因為插入資料時, 用戶輸入一些古怪的符號, 例如大圓圈內有1字的符號插入SQL後會變成"?"

    我不想變更資料庫的定序, 我想在VB.NET中檢查輸入的字串內的字元是否被SQL某個定序支援

    請問我要怎樣做?

    VS2010的

    WIN7及SERVER 2008 R2

    2012年4月21日 下午 09:59

解答

  • 只要資料庫所使用的定序可以支援Unicode, 而且資料庫的欄位型態是Unicode字串型態, 就應該沒有問題, 但是要注意您的程式所使用的NetworkStream傳送的資料格式為Unicode
    • 已標示為解答 para2010ful 2012年4月22日 上午 04:53
    2012年4月22日 上午 02:23
  • 我找到了解決方法了

    Imports System.Text

    ' Return 是 False 代表字串中有非 BIG5 的字元 Function CheckString(ByVal str As String) As Boolean Dim cp950 As Encoding = Encoding.GetEncoding(950) Return str.Equals(cp950.GetString(cp950.GetBytes(str))) End Function





    • 已標示為解答 para2010ful 2012年4月22日 上午 04:53
    • 已編輯 para2010ful 2012年4月22日 上午 04:55
    2012年4月22日 上午 04:53

所有回覆

  • 我用VB.NET寫了一個SOCKET SERVER連MSSQL 2008的

    因為插入資料時, 用戶輸入一些古怪的符號, 例如®這些符號插入SQL後會變成?

    我不想變更資料庫的定序, 我想在VB.NET中檢查輸入的字串內的字元是否被SQL某個定序支援

    請問我要怎樣做?

    NetworkStream 中傳送的資料是用UNICODE的, 能夠在CONSOLE中正常顯示, 所以應該不是傳送時編碼問題

    謝謝!

    2012年4月21日 下午 10:04
  • 只要資料庫所使用的定序可以支援Unicode, 而且資料庫的欄位型態是Unicode字串型態, 就應該沒有問題, 但是要注意您的程式所使用的NetworkStream傳送的資料格式為Unicode
    • 已標示為解答 para2010ful 2012年4月22日 上午 04:53
    2012年4月22日 上午 02:23
  • 我找到了解決方法了

    Imports System.Text

    ' Return 是 False 代表字串中有非 BIG5 的字元 Function CheckString(ByVal str As String) As Boolean Dim cp950 As Encoding = Encoding.GetEncoding(950) Return str.Equals(cp950.GetString(cp950.GetBytes(str))) End Function





    • 已標示為解答 para2010ful 2012年4月22日 上午 04:53
    • 已編輯 para2010ful 2012年4月22日 上午 04:55
    2012年4月22日 上午 04:53
  • ?

    SQL Server 的不是在 SQL 語法中加入 N 嗎?

    例如 'Unicode'N


    論壇是網友平等互助 保證解答請至 微軟技術支援服務


    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。

    2012年4月22日 下午 03:03