當前位置:成語大全網 - 新華字典 - 請問怎麽修改MS SQL數據庫的編碼方式啊?

請問怎麽修改MS SQL數據庫的編碼方式啊?

sql server 2000的unicode編碼有特殊性,僅僅在rails中使用utf8編碼,和把全部rails項目文件格式改成utf8之外,還是不夠的。僅僅這樣做,只是部分中文字符能夠正確處理,而且存入sql server2000中的中文數據,也完全是亂碼。正確的配置方法應該如下。

1. ms sql server2000中數據字段全部要選擇成n打頭的類型,比如ntext,nvarchar等。

2.安裝ADO Driver

安裝one -click installer 來安裝ruby 的話就已經安裝了所有連接SQL Server使用的需求包.但是,並沒有安裝ADO Driver.

這樣來安裝它:

在Ruby目錄下找到這個目錄: \ruby\lib\ruby\site_ruby\1.8\DBD .例如:我的Ruby安裝在D:\ruby中,所以是這個目錄D:\ruby\lib\ruby\site_ruby\1.8\DBD 在該目錄中創建壹個ADO文件夾. 下載Ruby-DBI,將lib/dbd_ado/ADO.rb文件拷貝到X:/ruby/lib/ruby/site_ruby/1.8/DBD/ADO/ADO.rb

3. 配置database.yml:Java代碼

development:

adapter: sqlserver

database: database_name

host: server_name

username: user_name

password: your_pw_here

development:

adapter: sqlserver

database: database_name

host: server_name

username: user_name

password: your_pw_here

4.在environment.rb添加下面代碼

require 'win32ole'

WIN32OLE.codepage = WIN32OLE::CP_UTF8

在這裏稍微解釋下第四部分的設置。sql server 2000中使用的unicode 並非是utf8,ado的默認鏈接編碼都是當前系統設置的code pages相關的。

壹般的windows設置都是非unicode的,比如簡體中文windows系統下壹般都是gb2312, 在rails中database.yml設置encoding: utf8,對於sql server沒有任何用處。

為了迫使sql server接受utf8數據,必須修改ado鏈接的code pages值為utf8,才能讓ado部分代碼在接受rails傳入的utf8數據之後,不做任何額外的處理. 否則的話,ado部分代碼會根據當前系統的默認code pages值來處理這裏字符數據。

於是在中文windows系統上,從utf8的rails項目中傳入的數據,會被當作gb2312編碼的數據來傳遞到sql server2000中,於是sql server2000中存入的數據會成為亂碼,也有部分數據在處理過程中出錯,導致sql 語句執行出錯。比如常見的中文字符右邊的單引號會不見的情況。

不設置 WIN32OLE.codepage = WIN32OLE::CP_UTF8,妳的整個系統編碼配置是這樣的

rails(utf8)<-->ado(根據當前系統cp來取得編碼,或是gb2312或是其他)<-->sql server 2000 (unicode)

整個系統編碼不壹至

WIN32OLE.codepage = WIN32OLE::CP_UTF8 這句代碼就是為了更改cp值.整個系統編碼配置是這樣的

rails(utf8)<-->ado(utf8)<-->sql server 2000 (unicode)

整個系統編碼壹至,整個系統中不會再出現任何亂碼.

註:以上轉自:jack發表在javaeye網站上的文章,地址:/topic/53877

database.yml也可以用以下的配置試試(用下面這種的話第1條或許不用,沒試過)