這天老鳥又開始糾纏著菜鳥:「菜鳥啊,我們最近遇到乙個rds sql server 2008 r2的奇怪的問題,我們的生僻字寫入到rds sql server中,查詢結果展示出來是亂碼呀?你去解決下這個問題吧。」。
「可是,鳥哥,我最近在做關於sqltest的系列文章啊,暫時抽不出。。。。。。」。
「那個暫時先放放,這個比較緊急,盡快,立刻,馬上去覆盤並解決掉,understand?」。還沒等菜鳥說完,老鳥已經迫不及待的發號施令了。
看到老鳥為這事著急上火的樣子,菜鳥已經意識到問題的嚴重性,於是放下手中的活,趕緊投入到這個問題的覆盤分析中來。
經過一番翻雲覆雨的研究後,菜鳥拿出了覆盤的例子來,參見下面的**:
use tempdb
goif object_id('#temp', 'u') is not null
drop table #temp
gocreate table #temp(
firstname varchar(10)
)insert into #temp
select '䅇'
union all
select '庫'
;select * from #temp
查詢結果如下圖所示:
從查詢結果展示來看,生僻字「䅇 (su)」 的確顯示為亂碼問號(?)。菜鳥終於覆盤了老鳥說得場景,但是他還是高興不起來。難道rds sql server 2008r2真如鳥哥所說,對生僻字不支援嗎?高階大氣上檔次的阿里雲rds sql server不至於吧?隨著研究的深入,菜鳥漸漸的找到問題的根本原因:
sql server是使用unicode編碼的資料型別來支援中文的,比如:nchar, nvarchar等資料型別,類似的語言還有拉丁語系,和包含中文在內的亞洲語言。所以,要解決這問題,我們的資料型別選擇就必須是unicode編碼的資料型別,很顯然覆盤例子中的資料型別varchar選擇錯誤,我們只需要將這個資料型別修改為nvarchar,即可解決問題了。
在正確分析了問題所在以後,解決問題就變得很簡單了,參見下面的測試**:
use tempdb
goif object_id('#temp', 'u') is not null
drop table #temp
gocreate table #temp(
firstname nvarchar(10)
)insert into #temp
select n'䅇'
union all
select n'庫'
;select * from #temp
測試結果展示
從結果展示來看,生僻字「䅇 (su)」已經可以成功展示出來了,這裡需要特別強調兩點,否則很有可能展示出來還是亂碼:
至此,菜鳥成功覆盤並解決了rds sql server 2008 r2遭遇生僻字亂碼的問題。又開始回過頭來繼續sqltest系列,革命尚未成功,同志還需努力。
RDS SQL SERVER 解決中文亂碼問題
這天老鳥又開始糾纏著菜鳥 菜鳥啊,我們最近遇到乙個rds sql server 2008 r2的奇怪的問題,我們的生僻字寫入到rds sql server中,查詢結果展示出來是亂碼呀?你去解決下這個問題吧。可是,鳥哥,我最近在做關於sqltest的系列文章啊,暫時抽不出。那個暫時先放放,這個比較緊急...
解決Pycharm中SystemError報錯
邏輯大致是,開啟執行緒,監聽kafka生產者push的topic訊息。問題出現在監聽過程中,執行緒在接收幾條topic之後出現報錯,不再處理資料exception ignored in traceback most recent call last file f pycharmprojects py...
解決servlet filter中if語句無效問題
今天寫 學習filter時,遇到了一件很奇怪的事情,就是當在jsp中同時提交檔案和乙個text元件時,servlet中的if語句無法返回true,如下 這是jsp 這是filter中的 if ps 1 如果這樣寫 的話,filter中的 永遠都不會返回true,也就無法執行其中的相應 而當改為 if...