欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
如何設置Oracle數據庫客戶(hù)端字符集以及系統中的NLS

概述:
本地化是系統或軟件運行的語(yǔ)言和文化環(huán)境。設置NLS_LANG環(huán)境參數是規定Oracle數據庫軟件本地化行為最簡(jiǎn)單的方式。
NLS_LANG參數不但指定了客戶(hù)端應用程序和Oracle數據庫所使用的語(yǔ)言和地區;同時(shí)也指定了客戶(hù)端程序輸入數據和顯示數據所使用的字符集。

本文主要包含如下五部分
◆ NLS_LANG環(huán)境變量的構成
◆ NLS_LANG環(huán)境變量的格式
◆ 如何查看數據庫NLS參數設置
◆ 舉例說(shuō)明如何設置NLS_LANG環(huán)境變量
◆ 舉例說(shuō)明一些特殊情況

一,NLS_LANG環(huán)境變量的構成
NLS_LANG環(huán)境變量由如下三部分構成:
1,LANGUAGE:客戶(hù)端系統所使用的語(yǔ)言。
指定Oracle數據庫反饋的消息(例如異常信息,提示信息等)、字符數據的排列順序(當指定ORDER BY時(shí))、日(年月日中的天)名稱(chēng),月名稱(chēng)等所使用的語(yǔ)言。
每個(gè)支持的語(yǔ)言都有唯一的名稱(chēng)。例如,若操作系統使用簡(jiǎn)體中文,則為SIMPLIFIED CHINESE;若操作系統使用美式英文操作系統,則為AMERICAN。
LANGUAGE參數中隱含地區和字符集參數的信息。如果沒(méi)有指定LANGUAGE參數的值,則默認值為AMERICAN。
2,TERRITORY:客戶(hù)端系統所在的地區。
指定默認的日期,貨幣以及數字格式。
每一個(gè)支持的地區都有唯一的名稱(chēng)。如,CHINA,AMERICA或CANADA。
如果沒(méi)有指定TERRITORY參數,則此參數的值由LANGUAGE參數推理得出。
3,CHARSET:客戶(hù)端應用程序所使用的字符集。
正確地設置NLS_LANG環(huán)境變量,則使得字符數據能夠在客戶(hù)端字符集和數據庫字符集之間正確地轉換。
設置NLS_LANG不會(huì )改變客戶(hù)端系統的字符集,它僅僅是讓Oracle數據庫知道客戶(hù)端應用程序使用的是什么字符集,從而進(jìn)行相應的字符集轉換。
如果客戶(hù)端和數據庫字符集相同,則Oracle數據庫忽略字符集校驗,不執行字符集轉換。
Oracle所支持的每個(gè)字符集都有唯一的縮寫(xiě)。如,ZHS16GBK(GBK),AL32UTF8(UTF-8)等。
每一個(gè)LANGUAGE默認都有一個(gè)和它關(guān)聯(lián)的字符集。

二,NLS_LANG環(huán)境變量的格式
NLS_LANG = LANGEAGE_TERRITORY.CHARSET
注意,此處的.為英文逗號。

三,如何查看數據庫NLS參數設置
1,通過(guò)NLS_DATABASE_PARAMETERS視圖查看數據庫的NLS參數。
SELECT * FROM NLS_DATABASE_PARAMETERS ORDER BY PARAMETER;
查詢(xún)如下圖所示。其中,NLS_CHARACTERSET參數的值就表示數據庫所使用的字符集(創(chuàng )建數據庫時(shí)所指定的字符集)。


2,通過(guò)NLS_SESSION_PARAMETERS視圖查看當前用戶(hù)會(huì )話(huà)的NLS參數。
SELECT * FROM NLS_SESSION_PARAMETERS ORDER BY PARAMETER;
查詢(xún)如下圖所示:

四,舉例說(shuō)明如何設置NLS_LANG環(huán)境變量
此部分主要通過(guò)Oracle數據庫自帶的SQL PLUS數據庫客戶(hù)端程序說(shuō)明如何設置NLS_LANG中的字符集。
實(shí)驗環(huán)境:
數據庫NLS參數設置:數據庫NLS參數設置如第三部分(查看數據庫NLS參數設置)中第一個(gè)圖所示,NLS_CHARACTERSET=AL32UTF8。
操作系統:Windows 10英文企業(yè)版64位。
實(shí)驗準備:
1,創(chuàng )建一個(gè)表CHINESE_DATA

CREATE TABLE CHINESE_DATA(    CH_DATA VARCHAR2(64));

實(shí)驗一:
此實(shí)驗舉例說(shuō)明如何正確地設置命令行窗口和系統的NLS_LANG環(huán)境變量,從而能夠正確地顯示查詢(xún)結果。
1,設置客戶(hù)端系統的NLS_LANG環(huán)境變量


如上圖所示,Windows系統環(huán)NLS_LANG境變量的值為AMERICAN_AMERICA.ZHS16GBK,而數據庫的字符集為AL32UTF8。
很顯然,數據庫字符集和客戶(hù)端NLS_LANG中的字符集不一樣。這就有可能導致客戶(hù)端查詢(xún)數據時(shí)出現亂碼。
2,插入一條數據

INSERT INTO CHINESE_DATA VALUES('漢字');COMMIT;

注意:插入數據時(shí)可以借助PL/SQL Developer等工具,以確保數據能正確地輸入并存儲到數據庫中。
3,使用默認環(huán)境,在不改變命令行窗口代碼頁(yè)(每個(gè)代碼頁(yè)都對應著(zhù)一個(gè)字符集)的情況下查詢(xún)數據。
437代碼頁(yè)對應的字符集主要包含拉丁字母。
437代碼頁(yè)所包含的字符分類(lèi):



如上圖所示,不出所料,查詢(xún)結果出現亂碼。
實(shí)驗說(shuō)明:
數據庫字符集為AL32UTF8,Oracle通過(guò)NLS_LANG得知客戶(hù)端字符集為ZHS16GBK。
Oracle在返回查詢(xún)結果時(shí),把數據轉換為GBK格式,而437代碼頁(yè)所包含的字符中根本沒(méi)有漢字字符,所以顯示為亂碼。
4,把命令行窗口的代碼頁(yè)改為65001,其對應的字符集為UTF-8。

如上圖所示,查詢(xún)結果為不可見(jiàn)字符,也屬于亂碼。
實(shí)驗說(shuō)明:
Oracle返回的數據為GBK字符集,而控制臺為UTF-8字符集。盡管UTF-8字符集是GBK字符集的超集(其包含了所有GBK字符集中的字符),
但是兩者對同一個(gè)字符的編碼是不一樣的。如圖所示,GBK中“漢字”這兩個(gè)字符所包含的字節(Bytes)在UTF-8字符集中都表示不可見(jiàn)字符。
所以,其顯示結果是不正確的。
5,把控制臺代碼頁(yè)設置為936,其對應的字符集為GB2312。
注意,由于本次實(shí)驗的環(huán)境為英文系統,故而需要設置命令行窗口的字體。不然,無(wú)法正確顯示中文字符。


如圖所示,其查詢(xún)結果是正確的。
實(shí)驗說(shuō)明:
盡管GBK字符集是GB2312字符集的超集,其比GB2312字符集包含更多的字符。
但是GBK字符集向前兼容GB2312字符集?!皾h字”這兩個(gè)字符在GBK和GB2312字符集中的編碼完全相同,所以查詢(xún)能夠正確顯示。
實(shí)驗結論:
1,NLS_LANG環(huán)境變量中所指定的字符集其實(shí)就是數據庫客戶(hù)端應用程序所使用的字符集。
如果客戶(hù)端應用程序不支持NLS_LANG中所包含的字符集或者所支持的字符集與NLS_LANG中的字符集不兼容,則會(huì )出現亂碼。
2,此外,即使客戶(hù)端字符集和數據庫字符集相同,也可能會(huì )出現亂碼。
假如,Oracle數據庫為AL32UTF8字符集,客戶(hù)端使用UTF-8字符集。
然而,現實(shí)情況總是很復雜的。如果客戶(hù)端和數據庫所支持的UNICODE標準不一樣,則在很罕見(jiàn)的情況下仍有可能出現亂碼。

實(shí)驗二:
此實(shí)驗舉例說(shuō)明數據庫不支持客戶(hù)端字符集所包含的字符時(shí)會(huì )產(chǎn)生什么樣的結果。
1,創(chuàng )建一個(gè)使用WE8MSWIN1252字符集的數據庫。
本次實(shí)驗創(chuàng )建了一個(gè)名為TALRASHA的數據庫,其使用WE8MSWIN1252字符集。
以下是通過(guò)NLS_DATABASE_PARAMETERS視圖所查詢(xún)到的數據庫NLS參數。


2,設置客戶(hù)端系統的NLS_LANG環(huán)境變量

3,插入并查詢(xún)數據
由于需要存儲中文字符,故此處將代碼頁(yè)設置為936。

實(shí)驗說(shuō)明:
如上圖所示,由于數據庫字符集為WE8MSWIN1252,其不能正確地存儲中文字符,但可以正確存儲英文字符。
所以,查詢(xún)結果中,中文為亂碼,英文正常顯示。
實(shí)驗結論:
1,如果客戶(hù)端應用程序所使用的字符集是數據庫字符集的超集,或者客戶(hù)端應用程序中的某些字符不在數據庫字符集所表示的范圍之內,則數據庫在進(jìn)行字符集轉換時(shí)會(huì )產(chǎn)生錯誤的結果。
2,屬于客戶(hù)端字符集和數據庫字符集交集中的字符能夠正常存儲和顯示。

最終結論:
1,在查詢(xún)數據時(shí),客戶(hù)端字符集應該等于數據庫字符集或者是數據庫字符集的超集。從而避免顯示結果出現亂碼的問(wèn)題。
2,在數據輸入時(shí),客戶(hù)端字符集應該等于數據庫字符集或者是數據庫字符集的子集。從而使得輸入字符能夠在數據庫中正確地保存。
3,在創(chuàng )建數據庫時(shí),盡可能使用UNICODE字符集,從而避免字符數據不能正確存儲的問(wèn)題。

五,舉例說(shuō)明一些特殊情況
通過(guò)以上兩個(gè)實(shí)驗基本說(shuō)明了客戶(hù)端應用程序字符集,客戶(hù)端系統的NLS_LANG所包含的字符集和Oracle數據庫字符集三者之間的關(guān)系。
但是,某些數據庫客戶(hù)端應用程序有自己獨立的客戶(hù)端環(huán)境配置,其不依賴(lài)于客戶(hù)端系統中的NLS環(huán)境變量或者依僅賴(lài)于某些系統環(huán)境變量。
例如,PL/SQL DeveloperSQL Developer。它們的編輯器有自己的字符集和字體的設置,同時(shí)這兩個(gè)軟件也支持一些其他設置(如日期格式或者地區等)。
所以,在進(jìn)行第四部分的試驗一時(shí),建議先通過(guò)這兩個(gè)應用程序插入數據。
此外,還需要注意字體對數據顯示的影響。有的字體不能正確地顯示輸入或查詢(xún)結果中的字符也會(huì )產(chǎn)生問(wèn)題。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
oracle字符集
設置ORACLE客戶(hù)端字符集
字符集理論簡(jiǎn)介
【原創(chuàng )】Oracle管理專(zhuān)題之:Oracle9i 字符集與NLS
Oracle數據庫中文亂碼問(wèn)題
Oracle 字符集的查看和修改
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久