這篇文章給大家分享的是有關怎么解決ajax亂碼問題的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
上網找了一些資源,才弄明白這是編碼的問題,我的服務器端發送過來的數據是GB2312編碼的,而AJAX把接收到的數據都當成UTF-8編碼的。
網上的很多解決方法都是服務器端基于PHP、JSP等的,要改變這些的編碼方式都比較簡單。但是我的服務器端是用了C編寫的CGI程序,用于嵌入式系統中的,所有的輸出都是用了printf。
最后找到一個在linux下的頭文件<iconv.h>,它實現了各種編碼的轉換。使用方法如下:
int Gb2312toUtf8(char *inbuf,char *outbuf) { #ifdef ISCHANGE iconv_t cd; int inlen,outlen; inlen=strlen(inbuf);//得到輸入字符串的長度 outlen=100;//輸出字符串長度。 char **pin=&inbuf; char **pout=&outbuf; cd=iconv_open("utf-8","gb2312");//設置為GB2312轉為UTF-8 if (cd==0) return -1; memset(outbuf,0,outlen); if(iconv(cd,pin,&inlen,pout,&outlen)==-1) return -1; iconv_close(cd); #else Strcpy(outbuf,inbuf); #endif return 0; }
這樣把要輸出的內容經過轉換后再輸出,就不會出現亂碼了。
但是,第一次的頁面輸出和后面AJAX請求的輸出又是同一段代碼,轉換后第一次輸出又出現了亂碼,所以我加了一個宏定義,在編譯AJAX輸出的程序時,加出了#define ISCHANGE 1,這樣就可以正確的顯示了。
感謝各位的閱讀!關于“怎么解決ajax亂碼問題”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。