亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        PHP與SQL Server處理維吾爾文的方法研究

        2015-05-30 10:48:04賈志先
        智能計算機與應(yīng)用 2015年5期

        摘 要: 在PHP中,默認情況下,訪問SQL Server方式存在著不支持UTF-8字符集的問題。對PHP系統(tǒng)和代碼進行適當?shù)男薷暮蛿U展后,將SQL Server的數(shù)據(jù)集(CharacterSet)設(shè)為UTF-8,使PHP訪問SQL Server的mssql、adodb方式支持UTF-8字符集,解決了應(yīng)用PHP與SQL Server處理維吾爾文數(shù)據(jù)的問題。

        關(guān)鍵詞: PHP; SQL Server; 維吾爾文

        中圖分類號:TP391.1 文獻標識碼:A 文章編號:2095-2163(2015)05-

        The Application of PHP and SQL Server in the Data Processing of Uyghur character

        JIA Zhi-xian

        (Network and Experimental Teaching Center, Xinjiang University of Finance and Economics)

        Abstract: In PHP, there is a problem that does not support the UTF-8 character set in the method of access SQL Server, by default. The paper has appropriate modifications and extensions to the PHP system and code, and set up the CharacterSet of SQL Server for UTF-8, which can make the method of mssql and addodb access to SQL Server to support UTF-8 character set. Finally the paper can solve the problem of data processing of Uyghur character with PHP and SQL Server.

        Key Words: PHP; SQL Server; Uyghur character

        0 引言

        維吾爾語屬于阿爾泰系突厥語族,在形態(tài)結(jié)構(gòu)上屬黏著語類型?,F(xiàn)代維吾爾文是一種拼音式文字,從右向左書寫?,F(xiàn)代維吾爾文有32個字母,表示32個音素,包括8個元音和24個輔音?,F(xiàn)代維吾爾文字體分為獨立書體、簡化獨立書體、前連書體、前后連書體、后連書體和簡化后連書體等字體。在現(xiàn)代維吾爾文中,一個字母最少有兩種不同的字體符號,最多有8種不同的字體符號,32個字母共有126種不同的字體符號。

        目前,維吾爾文字符采用Unicode編碼。在PHP中,常用的訪問SQL Server方式有mssql、odbc和adodb等。在默認情況下,這些訪問SQL Server方式不支持Unicode編碼,無法應(yīng)用PHP與SQL Server處理維吾爾文。

        下面,通過對PHP中訪問SQL Server的mssql、adodb方式進行討論,使mssql、adodb訪問SQL Server方式支持UTF-8字符集(UTF-8是一種針對Unicode的可變長度字符編碼),給出PHP與SQL Server處理維吾爾文的方法,并應(yīng)用到維吾爾語考試閱卷系統(tǒng)開發(fā)中。

        1 維吾爾文的編碼

        Unicode是國際組織制定的可以容納世界上所有文字和符號的字符編碼方案。Unicode用數(shù)字0-0x10FFFF來映射這些字符,最多可以容納1 114 112個字符。在Unicode中,維吾爾文126種不同的字體符號被分配到阿拉伯字符基本區(qū),擴展區(qū)A和擴展區(qū)B。[1]

        在Unicode中,阿拉伯字符編碼分布為:

        阿拉伯文(0600H––06FFH);

        增補阿拉伯文(0750H––077FH);

        阿拉伯文語境表達方式字符集A(FB50H––FDFFH);

        阿拉伯文語境表達方式字符集B(FE70H––FEFFH)。

        UTF-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字符編碼。在電子郵件、網(wǎng)頁及其他存儲或發(fā)送文字的應(yīng)用中,UTF-8逐漸成為優(yōu)先采用的編碼。

        UTF-8使用一至六個字節(jié)按如下規(guī)則為每個字符編碼:

        (1)128個ASCII字符,每個字符只需一個字節(jié)編碼(Unicode范圍由0000H至007FH)。

        (2)帶有附加符號的拉丁文、希臘文、西里爾字母、亞美尼亞語、希伯來文、阿拉伯文、敘利亞文及它拿字母,每個字符需要兩個字節(jié)編碼(Unicode范圍由0080H至07FFH)。

        (3)其他基本多文種平面(BMP)中的字符(這包含了大部分常用字),每個字符需要使用三個字節(jié)編碼(Unicode范圍由0800H至FFFFH)。

        (4)其他極少使用的Unicode 輔助平面的字符使用四至六字節(jié)編碼。

        可以看出,在UTF-8編碼中,一部分被分配到阿拉伯字符基本區(qū)的維吾爾文字符,采用兩個字節(jié)編碼,其它被分配到阿拉伯字符擴展區(qū)A和擴展區(qū)B的維吾爾文字符,采用三個字節(jié)編碼。

        2 PHP中顯示維吾爾文的字符集選擇

        在計算機字符編碼中,有多種不同的字符編碼方案。在網(wǎng)頁中選擇能夠正常顯示維吾爾語文字的字符編碼是網(wǎng)頁設(shè)計中的一個重要的問題。

        在PHP網(wǎng)頁設(shè)計中,選擇UTF-8作為網(wǎng)頁的字符集,可以解決維吾爾文的顯示問題。實現(xiàn)的方法為:

        (1)在靜態(tài)頁面代碼中,加入:

        (2)在PHP代碼中,加入:

        header( "Content-type: text/html; charset=utf-8" );

        3 SQL Server數(shù)據(jù)庫存儲維吾爾文的字段類型選擇

        在不支持Unicode字符集的情況下,從SQL Server數(shù)據(jù)庫存取數(shù)據(jù)時,維吾爾文數(shù)據(jù)將被轉(zhuǎn)換為一系列問號“?”。例如, (新疆維吾爾語水平等級考試)被轉(zhuǎn)換為“?????? ?????? ???? ?????? ?????????”。

        產(chǎn)生這一問題的原因是由于在不支持Unicode字符集的情況下,用Unicode代碼表示的維吾爾文字符被映射為ANSI代碼,在映射過程中出現(xiàn)編碼映射錯誤,導(dǎo)致維吾爾文字符被轉(zhuǎn)換為“?”。

        在SQL Server中,數(shù)據(jù)庫表具有多種字段類型,其中,char、varchar、text字段類型可以存儲非Unicode數(shù)據(jù)類型的字符。nchar、nvarchar、ntext字段類型可以存儲Unicode數(shù)據(jù)類型的字符。

        在SQL Server的數(shù)據(jù)庫表中,對于存儲維吾爾文的字段,選擇nchar、nvarchar、ntext等可以存儲Unicode數(shù)據(jù)的字段類型,即可解決維吾爾文的存儲問題。

        4 PHP訪問SQL Server數(shù)據(jù)庫中維吾爾文數(shù)據(jù)的方式

        在PHP中,常用的訪問SQL Server方式有mssql、odbc和adodb等。對PHP系統(tǒng)和代碼進行適當?shù)男薷暮蛿U展后,mssql、adodb訪問SQL Server方式可以支持UTF-8字符集,從而實現(xiàn)訪問SQL Server數(shù)據(jù)庫中的維吾爾文數(shù)據(jù)。

        4.1 mssql方式訪問SQL Server

        PHP提供了對SQL Server的支持,應(yīng)用mssql方式可以訪問SQL Server。但是,從PHP 5.3版本開始,PHP不再提供php_mssql模塊,需要利用微軟發(fā)布的驅(qū)動程序SQL Server Driver for PHP。

        對應(yīng)不同的PHP版本,微軟提供了相應(yīng)的mssql模塊。在PHP加載微軟的mssql模塊過程中,由于版本不兼容,會出現(xiàn)加載出錯的情況。因此,在安裝mssql模塊時,要注意PHP和微軟的mssql模塊版本之間的一致性。例如,筆者使用的一個PHP版本是:

        XAMPP 1.8.2

        PHP 5.4.31

        對應(yīng)的微軟mssql模塊是:

        php_sqlsrv_54_ts.dll 2012/8/28 201KB

        php_pdo_sqlsrv_54_ts.dll 2012/8/28 183KB

        將php_sqlsrv_54_ts.dll,php_pdo_sqlsrv_54_ts.dll存儲到C:\xampp\php\ext文件夾下。修改C:\xampp\php下的php.ini文件,在php.ini文件的Dynamic Extensions部分,增加:

        extension=php_sqlsrv_54_ts.dll

        extension=php_pdo_sqlsrv_54_ts.dll

        在PHP中可以利用代碼<?php phpinfo(); ?>顯示php服務(wù)器的配置信息。如果微軟的mssql模塊加載成功,會看到如圖1中的SQL Server配置部分。[2]

        圖1 SQL Server配置部分

        Fig.1: SQL Server configuration settings page

        在連接SQL Server數(shù)據(jù)庫的代碼中增加"CharacterSet"=>"utf-8"(表示SQL Server的字符集為UTF-8編碼),如:

        $coninfo=array("Database"=>$dbname,"UID"=>$dbuser,"PWD"=>$dbpass,"CharacterSet"=>"utf-8");

        $conn=sqlsrv_connect($dbhost,$coninfo) or die ("連接失敗!");

        即可支持UTF-8字符集。其中,$dbname, $dbuser和$dbpass分別為SQL Server數(shù)據(jù)庫名,用戶名和密碼。

        4.2 adodb方式訪問SQL Server

        ADODB(Active Data Objects Data Base)是存取數(shù)據(jù)庫所使用到的一組函數(shù)。在PHP中,提供了與微軟的ADODB相似的語法功能[3]。應(yīng)用adodb方式訪問SQL Server,需要從http://sourceforge.net/projects/adodb網(wǎng)站上下載和安裝adodb包。將adodb包解壓縮到網(wǎng)頁所在的文件夾下,并修改adodb5\drivers文件夾下adodb-mssqlnative.inc.php文件中的_connect()函數(shù):

        function _connect($argHostname, $argUsername, $argPassword, $argDatabasename)

        {

        if (!function_exists('sqlsrv_connect')) return null;

        $connectionInfo = $this->connectionInfo;

        $connectionInfo["Database"]=$argDatabasename;

        $connectionInfo["UID"]=$argUsername;

        $connectionInfo["PWD"]=$argPassword;

        … …

        }

        在_connect()函數(shù)中的$connectionInfo["PWD"]=$argPassword;語句后,增加一條$connectionInfo["CharacterSet"]="utf-8";語句。其功能是設(shè)置SQL Server的字符集為UTF-8編碼。

        adodb方式連接SQL Server的代碼為:

        <?php

        include('adodb5/adodb.inc.php');// adodb5是安裝adodb包的路徑

        $conn = ADONewConnection('mssqlnative');

        $conn->Connect($dbhost,$dbuser,$dbpass,$dbname);

        ?>

        其中,ADONewConnection()函數(shù)功能是連接數(shù)據(jù)庫,'mssqlnative'是連接SQL Server的數(shù)據(jù)庫驅(qū)動程序名稱。Connect()函數(shù)功能是實現(xiàn)與數(shù)據(jù)庫的連接,$dbhost, $dbuser, $dbpass和$dbname分別為SQL Server數(shù)據(jù)庫的服務(wù)器IP地址,用戶名,密碼和數(shù)據(jù)庫名。

        在以上兩種PHP訪問SQL Server方法中,支持UTF-8字符集的關(guān)鍵是在連接SQL Server時,設(shè)置SQL Server的字符集CharacterSet為UTF-8。

        5 PHP與SQL Server之間編碼的轉(zhuǎn)換

        在PHP訪問SQL Server過程中,當連接SQL Server的字符集設(shè)為UTF-8編碼時,SQL語句需要使用UTF-8編碼,返回的數(shù)據(jù)集的字段名需要使用GB-2312編碼。因此,在PHP網(wǎng)頁設(shè)計過程中,需要應(yīng)用iconv ()函數(shù)進行編碼轉(zhuǎn)換。[4]

        在網(wǎng)頁設(shè)計過程中,要注意PHP文件的存儲格式。當轉(zhuǎn)換文件格式后,要調(diào)整文件中SQL語句和數(shù)據(jù)集字段名的編碼。

        例如,在維吾爾語考試閱卷系統(tǒng)中,應(yīng)用adodb方式訪問SQL Server,查詢“試題1”表,返回“題號”和“答案”字段值。

        1)當網(wǎng)頁文件格式為UTF-8時,查詢語句為:

        $Strsql = "SELECT * FROM 試題1";

        $rs = $conn->Execute($Strsql);

        “題號”和“答案”字段表達式為:

        $rs->fields[iconv("utf-8","gb2312",'題號')];

        $rs->fields[iconv("utf-8","gb2312",'答案')];

        2)當網(wǎng)頁文件格式為ANSI時,查詢語句為:

        $Strsql = "SELECT * FROM 試題1";

        $rs = $conn->Execute(iconv("gb2312","utf-8",$Strsql));

        “題號”和“答案”字段表達式為:

        $rs->fields['題號'];

        $rs->fields['答案'];

        6 結(jié)束語

        本文是對[5]的補充和完善,在[5]中,由于尚未搞清mssql、adodb訪問SQL Server方式支持UTF-8字符集的問題,在維吾爾語口試評卷系統(tǒng)的網(wǎng)頁設(shè)計中,采用圖像方式顯示維吾爾文試題和答案。

        在PHP訪問SQL Server的mssql、adodb方式支持UTF-8字符集這一問題解決后,應(yīng)用PHP與SQL Server處理維吾爾文數(shù)據(jù)的問題也相應(yīng)地得到了解決。在維吾爾語口試評卷系統(tǒng)中,應(yīng)用mssql、adodb方式訪問SQL Server數(shù)據(jù)庫中維吾爾文數(shù)據(jù),取得了很好的結(jié)果。

        參考文獻:

        [1] 維尼拉·木沙江,艾爾肯·伊米爾.維吾爾文Unicode在線處理技術(shù)與實現(xiàn)[J].新疆大學(xué)學(xué)報(自然科學(xué)版), 2004,21(3):332-334.

        [2] Tali Smith. Install the SQL Server Driver for PHP [EB/OL].http://www.iis.net/learn/application-frameworks/install-and-configure-php-on-iis/install-the-sql-server-driver-for-php.2009-11-15.

        [3] 潘凱華,劉中華等編著.PHP從入門到精通[M](第二版).北京:清華大學(xué)出版社,2010.

        [4] 陳軍紅,王瑞敬.PHP編程從基礎(chǔ)到應(yīng)用[M].北京:清華大學(xué)出版社,2014.

        [5] 賈志先.維吾爾語口試閱卷系統(tǒng)開發(fā)中若干問題的研究[J].智能計算機與應(yīng)用,2015,5(4):30-32.

        日本激情视频一区在线观看| 含紧一点h边做边走动免费视频| 女人被男人爽到呻吟的视频| 无遮挡边摸边吃奶边做视频免费| 免费国产一级特黄aa大片在线| 琪琪av一区二区三区| 操风骚人妻沉沦中文字幕| 夜夜添夜夜添夜夜摸夜夜摸 | 一边摸一边做爽的视频17国产 | 国产丝袜美腿精品91在线看| 亚洲精品tv久久久久久久久久| 国产精品久久无码一区二区三区网| 久久精品国产热| 精品久久一区二区av| 亚洲 欧美 偷自乱 图片| 天堂草原电视剧在线观看图片高清| 国产主播福利一区二区| 魔鬼身材极品女神在线| 偷拍夫妻视频一区二区| 伊人色综合久久天天五月婷| 精品午夜福利1000在线观看| 99热久久只有这里是精品| 青青久久精品一本一区人人| 人妻少妇久久中文字幕| 久久亚洲av成人无码国产| 久久久久无码精品国| 人妻少妇久久中中文字幕| 无码色av一二区在线播放| 精品熟女日韩中文十区| 男女高潮免费观看无遮挡| 一区二区三区日韩精品视频 | 激情亚洲一区国产精品久久| 国产精品v欧美精品v日韩精品| 91麻豆精品激情在线观看最新| 欧美片欧美日韩国产综合片| 一区二区三区乱码专区| 国产又粗又猛又黄又爽无遮挡| 天堂а√在线最新版中文| 亚洲av激情久久精品人| 国产香蕉一区二区三区在线视频| 日韩av精品国产av精品|