亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? unicode coding.txt

?? Windows環境下的Unicode編程
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
Windows環境下的Unicode編程

  國際上規定了兩種二進制文字內碼表示方法。
  ASCII是8位的,表示漢字需要兩個字節以前大部分應用都使這種,不過有的時候會有亂碼出現。UNICODE是16位的,比較好。

  ASCII是American Standard Code for Information Interchange的縮寫,用來制訂計算機中每個符號對應的代碼,這也叫做計算機的內碼(code)。每個ASCII碼以1個字節(Byte)儲存,從0到數字127代表不同的常用符號,例如大寫A的ASCII碼是65,小寫a則是97。由于ASCII字節的七個位,最高位并不使用,所以后來又將最高的一個位也編入這套內碼中,成為八個位的延伸ASCII(ExtendedASCII)碼,這套內碼加上了許多外文和表格等特殊符號,成為目前常用的內碼。

  Unicode是Unified Code的縮寫,也就是統一碼。具體可參考:http://www.unicode.org/unicode/standard/translations/s-chinese.html 


  ASCII碼:

  ASCII碼是目前計算機中用得最廣泛的字符集及其編碼,是由美國國家標準局(ANSI)制定的ASCII碼(American Standard Code for Information Interchange,美國標準信息交換碼),它已被國際標準化組織(ISO)定為國際標準,稱為ISO 646標準。適用于所有拉丁文字字母,ASCII碼有7位碼和8位碼兩種形式。 

  因為1位二進制數可以表示(21=)2種狀態:0、1;而2位二進制數可以表示(22)=4種狀態:00、01、10、11;依次類推,7位二進制數可以表示(27=)128種狀態,每種狀態都唯一地編為一個7位的二進制碼,對應一個字符(或控制碼),這些碼可以排列成一個十進制序號0~127。所以,7位ASCII碼是用七位二進制數進行編碼的,可以表示128個字符。 
  第0~32號及第127號(共34個)是控制字符或通訊專用字符,如控制符:LF(換行)、CR(回車)、FF(換頁)、DEL(刪除)、BEL(振鈴)等;通訊專用字符:SOH(文頭)、EOT(文尾)、ACK(確認)等;第33~126號(共94個)是字符,其中第48~57號為0~9十個阿拉伯數字;65~90號為26個大寫英文字母,97~122號為26個小寫英文字母,其余為一些標點符號、運算符號等。 

  注意:在計算機的存儲單元中,一個ASCII碼值占一個字節(8個二進制位),其最高位(b7)用作奇偶校驗位。所謂奇偶校驗,是指在代碼傳送過程中用來檢驗是否出現錯誤的一種方法,一般分奇校驗和偶校驗兩種。奇校驗規定:正確的代碼一個字節中1的個數必須是奇數,若非奇數,則在最高位b7添1;偶校驗規定:正確的代碼一個字節中1的個數必須是偶數,若非偶數,則在最高位b7添1。 


  Unicode碼:

  Unicode碼也是一種國際標準編碼,采用二個字節編碼,與ANSI碼不兼容。目前,在網絡、Windows系統和很多大型軟件中得到應用。


  手機通信中普遍使用Unicode碼。例如手機短消息的發送是以PDU串的形式發送出去的,中文字符以Unicode碼來表示,所以在發送中文短消息之前必須首先將中文字符轉換為Unicode碼。下面的函數將實現這個功能。

  這個函數主要應用到VB自帶的一個格式轉換函數:ChrW()將中文轉換為Unicode碼。  

  Public Function chg(rmsg As String) As String
  Dim tep As String
  Dim temp As String
  Dim i As Integer
  Dim b As Integer
  tep = rmsg
  i = Len(tep)
  b = i / 4
  If i = b * 4 Then
   b = b - 1
   tep = Left(tep, b * 4)
  Else
   tep = Left(tep, b * 4)
  End If
  chg = “”
  For i = 1 To b
   temp = “&H” & Mid(tep, (i - 1) * 4 + 1, 4)
   chg = chg & ChrW(CInt(Val(temp)))
  Next i
  End Function 


  另外一種:

  在日常編程中,常常需要把中文轉換為unicode碼:

StringBuilder sb = new StringBuilder();//Unicode
StringBuilder sa = new StringBuilder();//UTF-8
string s1;
string s2;
for(int i=0;i<sCode.length();i++)
{ 
byte[] bt = System.Text.Encoding.Unicode.GetBytes(sCode.Text.Substring(i,1));
if(bt.Length>1)//判斷是否漢字
{
s1=Convert.ToString((short)(bt[1] - '\0'),16);//轉化為16進制字符串
s2=Convert.ToString((short)(bt[0] - '\0'),16);//轉化為16進制字符串
s1=(s1.Length==1?“0”:“”)+s1;//不足位補0
s2=(s2.Length==1?“0”:“”)+s2;//不足位補0
sa.Append("&#"+Convert.ToInt32(s1+s2,16)+“;”);
sb.Append("\\u"+s1+s2);
}
}
Clipboard.SetDataObject(sb.ToString());
txtUTF8.Text = sa.ToString();
txtUnicode.Text = sb.ToString(); 




  如何讓自己的開發環境支持UNICODE?

  1.安裝Visual Studio時,在選擇VC++時需要加入unicode選項,保證相關的庫文件可以拷貝到system32下。
  2.VC++中:工程/設置/C/C++/預處理程序定義(Preprocessor difinitions)/去除_MBCS,加_UNICODE,UNICODE 
              工程/設置/link/output/輸入項-點符號(Entry)添加wWinMainCRTStartup 反之為MBCS(ANSI)編譯。 




  Windows環境下Unicode編程總結

  一、讓VC6支持Unicode

  通過使用unicode編譯,軟件可以適應多種情況,如何在自己的工程中添加這兩種編譯方式呢?下面是一個簡單的步驟:
    
  1、選擇“Build->Configurations”菜單
  2、點擊“Add”按鈕,添加“Unicode Debug” copysetting from “win32 Debug”配置
  3、添加“Unicode Release”copysetting from “win32 Release”配置 ,然后點擊“OK”
  4、選擇“Project->Setting”菜單
  5、切換到“General ”TAB頁(可選)
  6、修改“Win32 Unicode Debug”的Intermediate Files和Output Files為DebugU (可選)  
  7、修改“Win32 Unicode Release”的Intermediate Files和Output Files為ReleaseU (可選)
  8、切換到“C++ ” Tab頁
  9、從下拉列表框中選擇“Preprocessor”
  10、為“Win32 Unicode Debug”和“Win32 Unicode Release”分別添加"_UNICODE,UNICODE " variables
  11、切換到“link ” Tab頁, 從下拉列表框中選擇“output” ,設置Entry為wWinMainCRTStartup(如果為cosole程序則不需要)

  12、在需要Unicode字符變量的地方用TCHAR(或WCHAR,兩個是一樣的)定義,如果需要ANSI則依然用char定義
  13、把所有的Unicode字符串常量用L宏包起來,比如 TCHAR* szText = L"我的Text";


  二、Unicode與UTF8的相互轉換

///////////////////////////////////////////////////////////////////////////////
// Convert a UTF8 string to WCHAR string. 
// Caller must release the memory of pwszOutput by calling "delete[] pwszOutput ".
///////////////////////////////////////////////////////////////////////////////
HRESULT UTF8ToWChar( char * ptszInput, WCHAR ** pwszOutput )
{
    int cchOutput = 0;
    
    if( NULL == ptszInput || NULL == pwszOutput )
    {
        return( E_INVALIDARG );
    }

    //
    // Get output buffer size
    //
#ifndef UNICODE
    cchOutput = wcslen( ptszInput ) + 1;
#else //UNICODE
    cchOutput = MultiByteToWideChar( CP_UTF8, 0, ptszInput, -1, NULL, 0 );
    if( 0 == cchOutput )
    {
        return( HRESULT_FROM_WIN32( GetLastError() ) );
    }
#endif // UNICODE

    *pwszOutput = new WCHAR[ cchOutput ];
//memset( *pwszOutput, 0 , cchOutput + 1 ) ;
    if( NULL == *pwszOutput)
    {
        return( E_OUTOFMEMORY );
    }

#ifndef UNICODE
    wcsncpy( *pwszOutput, ptszInput, cchOutput );
#else //UNICODE
    if( 0 == MultiByteToWideChar( CP_UTF8, 0, ptszInput, -1, *pwszOutput, cchOutput ) )
    {
        //SAFE_ARRAYDELETE( *pwszOutput );
        return( HRESULT_FROM_WIN32( GetLastError() ) );
    }        
#endif // UNICODE

    return( S_OK );
}

///////////////////////////////////////////////////////////////////////////////
// Convert a WCHAR string to UTF8 string. 
// Caller must release the memory of ptszOutput by calling "delete[] ptszOutput ".
///////////////////////////////////////////////////////////////////////////////
HRESULT WCharToUTF8(WCHAR * pwszInput , char ** ptszOutput)
{
    int cchOutput = 0;
    
    if( NULL == pwszInput || NULL == ptszOutput )
    {
        return( E_INVALIDARG );
    }

    //
    // Get output buffer size
    //
#ifndef UNICODE
    cchOutput = wcslen( pwszInput ) + 1;
#else //UNICODE
    cchOutput = WideCharToMultiByte( CP_UTF8, 0, pwszInput, -1, NULL, 0 ,NULL ,NULL );
    if( 0 == cchOutput )
    {
        return( HRESULT_FROM_WIN32( GetLastError() ) );
    }
#endif // UNICODE

    *ptszOutput = new char[ cchOutput] ;
    if( NULL == *ptszOutput)
    {
        return( E_OUTOFMEMORY );
    }
memset( *ptszOutput , 0 , cchOutput) ;

#ifndef UNICODE
    wcsncpy( *ptszOutput, pwszInput, cchOutput );
#else //UNICODE
    if( 0 == WideCharToMultiByte( CP_UTF8, 0, pwszInput, -1, *ptszOutput, cchOutput,NULL ,NULL ) )
    {
        //SAFE_ARRAYDELETE( *ptszOutput );
        return( HRESULT_FROM_WIN32( GetLastError() ) );
    }        
#endif // UNICODE

    return( S_OK );

}



  三、UTF8與ANSI的相互轉換

=====================================================
///////////////////////////////////////////////////////////////////////////////
// Convert a UTF8 string to ANSI string. 
// Caller must release the memory of pANSIOutput by calling delete[] pANSIOutput.
///////////////////////////////////////////////////////////////////////////////
BOOL   UTF8toANSI( char * pUtf8Input , char ** pANSIOutput )
{
if( NULL == pUtf8Input && NULL == pANSIOutput ) return FALSE ;

//convert to unicdoe firstly
    int nchOutput = MultiByteToWideChar( CP_UTF8, 0, pUtf8Input, -1, NULL, 0 );
    if( 0 == nchOutput )  
return FALSE ;

    WCHAR  * pWcharsz = new WCHAR[ nchOutput ];
ASSERT( pWcharsz != NULL ) ;
if( NULL == pWcharsz ) 
return FALSE ;
memset( pWcharsz , 0 , nchOutput * sizeof(WCHAR) ) ;
  
nchOutput = MultiByteToWideChar( CP_UTF8, 0, pUtf8Input, -1, pWcharsz, nchOutput )  ;
if( nchOutput <= 0 ) 
{
delete [] pWcharsz ;
return FALSE ;
}
//convert ANSI 
nchOutput = WideCharToMultiByte( CP_ACP, 0, pWcharsz, -1, NULL, 0 ,NULL ,NULL );
if( nchOutput <= 0 )
{
delete [] pWcharsz ;
return FALSE ;
}

* pANSIOutput  =  new char[nchOutput] ;
ASSERT( * pANSIOutput != NULL ) ;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产色产综合产在线视频| 日韩一区精品视频| 日本一区二区在线不卡| 久久久久久97三级| 26uuu国产一区二区三区| 精品捆绑美女sm三区| 欧美一卡二卡三卡| 欧美一二三区精品| 日韩一卡二卡三卡| 欧美一卡二卡在线观看| 日韩精品一区二区三区老鸭窝| 91精品国产91热久久久做人人| 欧美久久久久久久久久| 在线综合视频播放| 欧美一个色资源| 久久亚洲综合色| 国产亚洲欧美在线| 日韩码欧中文字| 一区二区三区在线观看网站| 亚洲一区二区三区中文字幕在线| 亚洲午夜一区二区| 日韩精品1区2区3区| 日韩精品每日更新| 黑人精品欧美一区二区蜜桃| 岛国精品在线观看| 91色porny在线视频| 欧美精品久久天天躁| 欧美一区二区日韩一区二区| 久久一日本道色综合| 国产精品视频一二| 亚洲国产一区二区a毛片| 丝瓜av网站精品一区二区| 狠狠色2019综合网| 99re视频精品| 欧美女孩性生活视频| 久久先锋影音av| 亚洲欧美日韩电影| 美美哒免费高清在线观看视频一区二区 | 蜜臀av一区二区在线免费观看| 激情文学综合网| a级精品国产片在线观看| 欧美体内she精视频| 欧美二区三区91| 日本一区二区三区dvd视频在线 | 99精品视频在线观看| 欧美日韩精品一区二区三区四区| 日韩美一区二区三区| 国产精品久久久久影院| 视频一区欧美精品| 大陆成人av片| 欧美高清视频一二三区| 国产精品蜜臀av| 丝袜美腿亚洲一区| www.av精品| 精品国产凹凸成av人网站| 亚洲色图欧美偷拍| 黄一区二区三区| 欧美日韩一区在线| 国产精品电影院| 麻豆成人久久精品二区三区小说| av资源站一区| ww亚洲ww在线观看国产| 亚洲在线中文字幕| 成人黄色一级视频| 精品久久五月天| 亚洲电影中文字幕在线观看| 丁香婷婷深情五月亚洲| 日韩三级.com| 亚洲一区免费视频| 99精品国产热久久91蜜凸| 欧美成人一区二区三区| 亚洲综合一二三区| 99免费精品视频| 久久久久久久久久久久久久久99| 午夜av电影一区| 一本久久综合亚洲鲁鲁五月天| 国产亚洲欧美色| 美女国产一区二区| 在线电影国产精品| 一区二区三区在线观看动漫| 成人免费视频一区| 久久久不卡网国产精品一区| 日韩av一区二区在线影视| 91久久精品一区二区三| 一色桃子久久精品亚洲| 高清久久久久久| 久久色.com| 六月丁香综合在线视频| 欧美美女直播网站| 五月婷婷久久丁香| 欧美日韩国产精选| 亚洲国产精品影院| 欧美在线播放高清精品| 亚洲激情成人在线| 91性感美女视频| 亚洲欧洲一区二区三区| 国产成都精品91一区二区三| 久久久久久久久岛国免费| 精品一区二区三区免费视频| 欧美一级黄色录像| 精品在线亚洲视频| 精品欧美一区二区久久| 狠狠v欧美v日韩v亚洲ⅴ| 精品99999| 国产成人aaa| 亚洲图片激情小说| 99精品视频一区二区三区| 亚洲日本va午夜在线电影| 99久久精品国产麻豆演员表| 中文字幕在线免费不卡| 色天天综合色天天久久| 一级日本不卡的影视| 欧美日韩免费观看一区三区| 亚洲一区二区三区中文字幕| 欧美三级韩国三级日本三斤| 日韩电影一区二区三区四区| 欧美电视剧在线看免费| 黑人巨大精品欧美黑白配亚洲| 国产亚洲一区字幕| 成人av手机在线观看| 亚洲综合成人在线| 宅男在线国产精品| 国产在线播放一区三区四| 中文字幕高清不卡| 97精品电影院| 视频一区在线播放| 精品国产凹凸成av人导航| 成人一区二区三区| 亚洲精品美国一| 91精品在线免费| 国产精品69久久久久水密桃| 国产精品久久久久影院亚瑟 | 精品黑人一区二区三区久久| 国产在线精品免费| 亚洲日本中文字幕区| 欧美精品自拍偷拍| 国产在线视视频有精品| 日韩一区中文字幕| 欧美一区在线视频| 国产精品一区二区在线播放 | 成人av小说网| 亚洲成人免费看| 久久综合九色综合97婷婷女人 | 亚洲精品一线二线三线| www.亚洲色图.com| 婷婷成人综合网| 国产日韩欧美一区二区三区乱码 | 久久久久久久久久美女| 日本韩国一区二区三区| 美女精品一区二区| 一区二区三区在线播放| 亚洲精品一区二区三区香蕉 | 亚洲蜜臀av乱码久久精品蜜桃| 7777精品伊人久久久大香线蕉完整版 | 久久精品国内一区二区三区| 中文字幕在线观看不卡| 91精品国产入口| av一区二区三区在线| 久久精品国产亚洲高清剧情介绍| 亚洲欧美一区二区三区国产精品| 欧美一区二区三区视频| 91香蕉视频在线| 国产又黄又大久久| 亚洲狠狠爱一区二区三区| 久久久国际精品| 51午夜精品国产| 91首页免费视频| 国产精品99久久久| 日本aⅴ免费视频一区二区三区| 中文字幕在线不卡| 日韩精品专区在线影院重磅| 色婷婷综合久色| 成人免费视频免费观看| 蜜桃av一区二区| 婷婷久久综合九色综合伊人色| 中文字幕一区二区三区在线播放| 精品免费日韩av| 欧美日韩第一区日日骚| 成人av动漫在线| 国产黄色精品网站| 麻豆精品在线播放| 亚洲一区二区影院| 亚洲免费观看高清在线观看| 国产欧美一区二区精品性色| 日韩免费在线观看| 欧美日韩精品一区二区三区四区| 91老师片黄在线观看| 国产成人精品亚洲日本在线桃色 | a级精品国产片在线观看| 国产在线精品一区在线观看麻豆| 亚洲国产你懂的| 一区二区在线免费观看| 亚洲欧美日韩综合aⅴ视频| 国产精品污污网站在线观看 | 国产在线视视频有精品| 麻豆一区二区三区| 麻豆精品一区二区三区| 六月丁香综合在线视频| 麻豆国产精品一区二区三区| 日韩成人伦理电影在线观看|