當前位置:首頁 » 編程語言 » sql編碼設置

sql編碼設置

發布時間: 2022-05-29 00:20:47

① 請問怎麼修改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網站上的文章,地址:http://www.javaeye.com/topic/53877

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

② 如何修改mssql資料庫編碼

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)
整個系統編碼一至,整個系統中不會再出現任何亂碼。

③ 怎麼用sql友規則的去創建編碼

怎麼用sql友規則的去創建編碼
-- 創建資料庫時,設置資料庫的編碼方式
-- CHARACTER SET:指定資料庫採用的字元集,utf8不能寫成utf-8
-- COLLATE:指定資料庫字元集的排序規則,utf8的默認排序規則為utf8_general_ci(通過show character set查看)
drop database if EXISTS dbtest;
create database dbtest CHARACTER SET utf8 COLLATE utf8_general_ci;

④ sql修改表編碼的語句

1、修改my.ini文件來修改編碼:加上default-character-set=字元集(utf8.gbk.gb2312等)
2、命令行修改:alterdatabaseda_namedefaultcharacterset"charset';或setnames'charset';或;
參考:http://www.2cto.com/database/201406/307694.html

⑤ mysql用sql語句創建表和資料庫怎麼設置字元編碼'

方法如下:

  • 我們先建一個DEMO表,來做我們今天的實現,建表語句如下:

    CREATE TABLE

    DEMO

    (

    NAME VARCHAR(50) COMMENT '姓名',

    SEX CHAR(1) COMMENT '性別',

    PRIMARY KEY (NAME)

    )

    ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='例子表';

    並且select查詢一下,如下圖

⑥ 如何使用SQL語句創建名稱為OnLineDB的資料庫,默認字元集設置為utf-8

  • 步驟一:首先在Linux上安裝mysql,本文不介紹mysql的安裝過程

    #yum install mysql

    #yum install mysql-server

    #yum install mysql-devel

    在Cenots7操作系統上,安裝mariadb(MariaDB資料庫管理系統是MySQL的一個分支,centos7使用),安裝命令:yum install mariadb-server mariadb

  • 步驟三:修改之後,重啟mysqlf服務(systemctl restart mariadb),重啟之後登陸mysql(mysql -umysql -p),使用語句show variable like '%character%;查詢結果如下,字元編碼已經變成utf-8了。

  • 如果查詢結果顯示不是UTF-8,就需要檢查修改的是否正確,也可以使用sql命令就行修改

    set character_set_client = utf8;

    set character_set_server = utf8;

    set character_set_connection = utf8;

    set character_set_database = utf8;

    set character_set_results = utf8;

    set collation_connection = utf8_general_ci;

    set collation_database = utf8_general_ci;

    set collation_server = utf8_general_ci;

⑦ 在PL/SQL Developer中如何設置SQL窗口裡的字元編碼格式

在windows中創
建一個名為「NLS_LANG」的系統環境變數,設置其值為「SIMPLIFIED
CHINESE_CHINA.ZHS16GBK」,
然後重新啟動
pl/sql
developer,這樣檢索出來的中文內容就不會是亂碼了。如果想轉換為UTF8字元集,可以賦予「NLS_LANG」為
「AMERICAN_AMERICA.UTF8」,然後重新啟動
pl/sql
developer。其它字元集設置同上

⑧ sql編碼為latin1,中文內容全部顯示問號,怎麼設置

第一種的代碼,你可以參考一下:
以下的我找的其中一篇,備份後資料庫是空的!
/**
* @param args
*/
public static void
main(String[] args) {
/*
* 備份和導入是一個互逆的過程。
*
備份:程序調用mysql的備份命令,讀出控制台輸入流信息,寫入.sql文件;
*
導入:程序調用mysql的導入命令,把從.sql文件中讀出的信息寫入控制台的輸出流
* 注意:此時定向符">"和"<"是不能用的
*/
backup();
load();
}

/**
*
備份檢驗一個sql文件是否可以做導入文件用的一個判斷方法:把該sql文件分別用記事本和ultra
*
edit打開,如果看到的中文均正常沒有亂碼,則可以用來做導入的源文件(不管sql文件的編碼格式如何,也不管db的編碼格式如何)
*/
public static void backup() {
try {
Runtime rt =
Runtime.getRuntime();

// 調用 mysql 的 cmd:
Process child = rt
.exec("mysqlmp -u root --set-charset=utf8 bjse act_obj");//
設置導出編碼為utf8。這里必須是utf8

//
把進程執行中的控制台輸出信息寫入.sql文件,即生成了備份文件。註:如果不對控制台信息進行讀出,則會導致進程堵塞無法運行
InputStream in
= child.getInputStream();// 控制台的輸出信息作為輸入流

InputStreamReader xx =
new InputStreamReader(in, "utf8");// 設置輸出流編碼為utf8。這里必須是utf8,否則從流中讀入的是亂碼

String inStr;
StringBuffer sb = new StringBuffer("");
String
outStr;
// 組合控制台輸出信息字元串
BufferedReader br = new
BufferedReader(xx);
while ((inStr = br.readLine()) != null) {
sb.append(inStr + "\r\n");
}
outStr = sb.toString();

//
要用來做導入用的sql目標文件:
FileOutputStream fout = new FileOutputStream(
"e:/mysql-5.0.27-win32/bin/bjse22.sql");
OutputStreamWriter writer = new
OutputStreamWriter(fout, "utf8");
writer.write(outStr);
//
註:這里如果用緩沖方式寫入文件的話,會導致中文亂碼,用flush()方法則可以避免
writer.flush();

//
別忘記關閉輸入輸出流
in.close();
xx.close();
br.close();
writer.close();
fout.close();

System.out.println("/* Output OK!
*/");

} catch (Exception e) {
e.printStackTrace();
}

}

/**
* 導入
*
*/
public static void load() {
try {
String fPath = "e:/mysql-5.0.27-win32/bin/bjse22.sql";
Runtime
rt = Runtime.getRuntime();

// 調用 mysql 的 cmd:
Process child =
rt.exec("mysql -u root bjse ");
OutputStream out =
child.getOutputStream();//控制台的輸入信息作為輸出流
String inStr;
StringBuffer sb
= new StringBuffer("");
String outStr;
BufferedReader br = new
BufferedReader(new InputStreamReader(
new FileInputStream(fPath),
"utf8"));
while ((inStr = br.readLine()) != null) {
sb.append(inStr +
"\r\n");
}
outStr = sb.toString();

OutputStreamWriter writer
= new OutputStreamWriter(out, "utf8");
writer.write(outStr);
//
註:這里如果用緩沖方式寫入文件的話,會導致中文亂碼,用flush()方法則可以避免

熱點內容
278源碼 發布:2025-02-12 09:22:40 瀏覽:248
13人牛牛源碼 發布:2025-02-12 09:22:40 瀏覽:155
win2008r2搭建iscsi伺服器 發布:2025-02-12 09:18:30 瀏覽:634
python解壓zip 發布:2025-02-12 09:08:46 瀏覽:921
如何加強人員配置 發布:2025-02-12 09:07:54 瀏覽:417
lol一區為什麼伺服器好卡 發布:2025-02-12 09:02:22 瀏覽:629
安卓運營商cm是哪個版本 發布:2025-02-12 09:00:00 瀏覽:515
pythonmd5校驗 發布:2025-02-12 08:51:00 瀏覽:470
編程題解析 發布:2025-02-12 08:40:30 瀏覽:454
bilibi手機緩存目錄在 發布:2025-02-12 08:33:11 瀏覽:458