Unicode、Big5或其他的文字編碼?Windows 輸入的是 Unicode,要如何解釋是你告訴 SQL Server

剛朋友問的問題,簡單的邏輯如下:

select ‘a中文煊’ collate SQL_Latin1_General_CP1_CI_AS,Convert(varbinary(10),’a中文煊’  collate SQL_Latin1_General_CP1_CI_AS),
‘a中文煊’ collate Chinese_Taiwan_Stroke_CI_AS,Convert(varbinary(10),’a中文煊’  collate Chinese_Taiwan_Stroke_CI_AS),
N’a中文煊’ collate Chinese_Taiwan_Stroke_CI_AS,Convert(varbinary(10),N’a中文煊’  collate Chinese_Taiwan_Stroke_CI_AS)

image

輸入時,Windows 收到的是 Unicode,且包含延伸字集,如同我現在的選字:

image

當檔案用 Unicode 存時,你都可以看得到,因為是文字編輯器在呈現這些文字圖形與 Unicode 的對應。

但要跟 SQL Server 溝通或存入時,你會告知目標的字集為何,因此上述三個範例,分別要用 Latin、Big5 和 Unicode 呈現,而 Unicode 是 superset,其他的字集較小,SQL Server 只能轉換兩個字集間能轉的部分,其餘都是問號了

One Comment

  1. Jerry
    Posted 2016 年 04 月 13 日 at 23:58:54 | Permalink | 回覆

    感謝百敬老師, 困擾好久的問題, 哈!

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

%d 位部落客按了讚: