utf-8相關資源

來源:互聯網
上載者:User
1、UTF-8 and Unicode FAQ
這篇文章說明了在 POSIX 系統 (Linux,Unix) 上使用 Unicode/UTF-8 所需要的資訊. 在將來不遠的幾年裡, Unicode 已經很接近於取代 ASCII 與 Latin-1 編碼的位置了. 它不僅允許你處理處理事實上存在於地球上的任何語言文字, 而且提供了一個全面的數學與技術符號集, 因此可以簡化科學資訊交換.
UTF-8 編碼提供了一種簡便而向後相容的方法, 使得那種完全圍繞 ASCII 設計的作業系統, 比如 Unix, 也可以使用 Unicode. UTF-8 就是 Unix, Linux 已經類似的系統使用 Unicode 的方式. 現在是你瞭解它的時候了

2、GBK編碼
中文字元編碼簡介 GB2312/GBK/GB18030/BIG5

3、雜文
1)網頁編碼utf8與gb2312的區別
2)UTF-8 , GBK , GB2312 編碼規則與檢測
3) 常用字元集編碼詳解:ASCII 、GB2312、GBK、GB18030、unicode、UTF-8

4、網頁form提交(stone同學的文章)
http://www.blogjava.net/emu/articles/31756.html

5、Linux Unicode 編程
如何在linux程式中加入並使用 Unicode 以實現外語支援

6、UTF-8與GB2312之間的互換(windows)
相信一定有不少的程式開發人員時常會遇到字元編碼的問題,而這個問題也是非常讓人頭痛的。因為這些都是潛在的錯誤,要找出這些錯誤也得要有這方面的開發經驗才行。特別是在處理xml文檔時,該問題的出現就更加的頻繁了,有一次用java寫伺服器端程式,用vc寫用戶端與之互動。互動的協議都是用xml寫的。結果在通訊時老是探索資料接受不正確。納悶!於是用抓取網路資料包工具抓取資料,後來才發現原來是java上xml的頭是這樣的<?xml version="1.0" encoding="UTF-8"?>,而vc上預設的是GB2312。所以一遇到漢字資料就不正確了。去網上找資料,這方面的文章好象特別少,針對像這樣的問題,下面我介紹一下我自己寫的一個轉換程式。當然,程式很簡單。如果有畫蛇添足的地方,還望各位高手一笑了之。

7、convert gb2312 to utf-8(linux命令列)
一直想把自己的 Linux box 從 zh_CN.GB2312 的 locale 設定遷移到 zh_CN.UTF-8 上
去,無奈之前的大量的實驗中用到的檔案都是 GB2312 編碼的,所以,這個遷移直到最
近因為要在一個工具上添加 UTF-8 編碼的中文支援才得以完成。以下是我在這個遷移的
過程碰到的一些和中文相關的問題以及我個人的解決方案,列此一來備忘,二來希望能
給有相同需求的朋友做個參考。
提醒:以下提及的工具中的大部分會對你的原始檔案進行”寫”操作,也就是說, 轉換出
來的結果可能會產生錯誤或者偏差。如果你不是一個有經驗的 Linux 使用者,請在做這些
操作的時候,注意先做好備份。並強烈建議你在使用某一個工具之 前,先仔細閱讀該工
具的 manual。(”man program-name”)

8、用PHP轉換編碼 — 將 UTF-8 轉換為 GB2312
在處理PHP程式時,常常會遇到編碼的問題.特別是處理RSS或者一些XML檔案. 一般這些檔案的編碼都是UTF-8的,但是很多網站要求的編碼是GB2312的. 要使UTF-8的檔案正常顯示 , 這個問題常常使人很頭疼.
php-mbstring模組的 mb_convert_encoding() 函數提供了轉換character encoding 的功能,但是並不提供 轉換成GB2312編碼的功能.
不過下面的函數提供了這個功能

9、《Windows核心編程》第二章---window下的Unicode編程
隨著M i c r o s o f t公司的Wi n d o w s作業系統在全世界日益廣泛的流行,對於軟體開發人員來說,
將目標瞄準國際上的各個不同市場,已經成為一個越來越重要的問題。美國的軟體版本比國際
版本提前6個月推向市場,這曾經是個司空見慣的現象。但是,由於各國對Wi n d o w s作業系統
提供了越來越多的支援,因此就更加容易為國際市場生產各種應用軟體,從而縮短了軟體的美
國版本與國際版本推出的時間間隔。
Wi n d o w s作業系統始終不逾地提供各種支援,以協助軟體開發人員進行應用程式的本地化
工作。應用軟體可以從各種不同的函數中獲得特定國家的資訊,並可觀察控制台的設定,以
確定使用者的喜好設定。Wi n d o w s甚至支援不同的字型,以適應應用的需要。
之所以將這一章放在本書的開頭,是因為考慮到U n i c o d e是開發任何應用程式時要採用的
基本步驟。本書的每一章中幾乎都要講到關於U n i c o d e的問題,而且書中給出的所有樣本應用
程式都是“用U n i c o d e實現的”。如果你為Microsoft Windows 2000或Microsoft Windows CE開發
應用程式,你應該使用U n i c o d e進行開發。如果你為Microsoft Windows 98開發應用程式,你必
須對某些問題作出決定。本章也要講述Windows 98的有關問題。

10、linux下 c編程
在LINUX上進行編碼轉換時,既可以利用iconv函數族編程實現,也可以利用iconv命令來實現,只不過後者是針對檔案的,即將指定檔案從一種編碼轉換為另一種編碼。  
  一、利用iconv函數族進行編碼轉換  
  iconv函數族的標頭檔是iconv.h,使用前需包含之。  
  #include   <iconv.h>  
  iconv函數族有三個函數,原型如下:  
  (1)   iconv_t   iconv_open(const   char   *tocode,   const   char   *fromcode);  
  此函數說明將要進行哪兩種編碼的轉換,tocode是目標編碼,fromcode是原編碼,該函數返回一個轉換控制代碼,供以下兩個函數使用。  
  (2)   size_t   iconv(iconv_t   cd,char   **inbuf,size_t   *inbytesleft,char   **outbuf,size_t   *outbytesleft);  
  此函數從inbuf中讀取字元,轉換後輸出到outbuf中,inbytesleft用以記錄還未轉換的字元數,outbytesleft用以記錄輸出緩衝的剩餘空間。   (3)   int   iconv_close(iconv_t   cd);  
  此函數用於關閉轉換控制代碼,釋放資源。  
  例子1:   用C語言實現的轉換樣本程式  
    
  /*   f.c   :   代碼轉換樣本C程式   */  
  #include   <iconv.h>  
  #define   OUTLEN   255  
  main()  
  {  
  char   *in_utf8   =   "姝e?ㄥ??瑁?";  
  char   *in_gb2312   =   "正在安裝";  
  char   out[OUTLEN];  
    
  //unicode碼轉為gb2312碼  
  rc   =   u2g(in_utf8,strlen(in_utf8),out,OUTLEN);  
  printf("unicode-->gb2312   out=%sn",out);  
  //gb2312碼轉為unicode碼  
  rc   =   g2u(in_gb2312,strlen(in_gb2312),out,OUTLEN);  
  printf("gb2312-->unicode   out=%sn",out);  
  }  
  //代碼轉換:從一種編碼轉為另一種編碼  
  int   code_convert(char   *from_charset,char   *to_charset,char   *inbuf,int   inlen,char   *outbuf,int   outlen)  
  {  
  iconv_t   cd;  
  int   rc;  
  char   **pin   =   &inbuf;  
  char   **pout   =   &outbuf;  
    
  cd   =   iconv_open(to_charset,from_charset);  
  if   (cd==0)   return   -1;  
  memset(outbuf,0,outlen);  
  if   (iconv(cd,pin,&inlen,pout,&outlen)==-1)   return   -1;  
  iconv_close(cd);  
  return   0;  
  }  
  //UNICODE碼轉為GB2312碼  
  int   u2g(char   *inbuf,int   inlen,char   *outbuf,int   outlen)  
  {  
  return   code_convert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);  
  }  
  //GB2312碼轉為UNICODE碼  
  int   g2u(char   *inbuf,size_t   inlen,char   *outbuf,size_t   outlen)  
  {  
  return   code_convert("gb2312","utf-8",inbuf,inlen,outbuf,outlen);  
  }  
    
  例子2:   用C++語言實現的轉換樣本程式  
    
  /*   f.cpp   :   代碼轉換樣本C++程式   */  
  #include   <iconv.h>  
  #include   <iostream>  
    
  #define   OUTLEN   255  
    
  using   namespace   std;  
    
  //   代碼轉換操作類  
  class   CodeConverter   {  
  private:  
  iconv_t   cd;  
  public:  
  //   構造  
  CodeConverter(const   char   *from_charset,const   char   *to_charset)   {  
  cd   =   iconv_open(to_charset,from_charset);  
  }  
    
  //   析構  
  ~CodeConverter()   {  
  iconv_close(cd);  
  }  
    
  //   轉換輸出  
  int   convert(char   *inbuf,int   inlen,char   *outbuf,int   outlen)   {  
  char   **pin   =   &inbuf;  
  char   **pout   =   &outbuf;  
    
  memset(outbuf,0,outlen);  
  return   iconv(cd,pin,(size_t   *)&inlen,pout,(size_t   *)&outlen);  
  }  
  };  
    
  int   main(int   argc,   char   **argv)  
  {  
  char   *in_utf8   =   "姝e?ㄥ??瑁?";  
  char   *in_gb2312   =   "正在安裝";  
  char   out[OUTLEN];  
    
  //   utf-8-->gb2312  
  CodeConverter   cc   =   CodeConverter("utf-8","gb2312");  
  cc.convert(in_utf8,strlen(in_utf8),out,OUTLEN);  
  cout   <<   "utf-8-->gb2312   in="   <<   in_utf8   <<   ",out="   <<   out   <<   endl;  
    
  //   gb2312-->utf-8  
  CodeConverter   cc2   =   CodeConverter("gb2312","utf-8");  
  cc2.convert(in_gb2312,strlen(in_gb2312),out,OUTLEN);  
  cout   <<   "gb2312-->utf-8   in="   <<   in_gb2312   <<   ",out="   <<   out   <<   endl;  
  } 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.