亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請原諒我發代碼,我也知道發代碼是可恥的,但是實在是不知道怎么回事了。

請原諒我發代碼,我也知道發代碼是可恥的,但是實在是不知道怎么回事了。

GCT1015 2023-01-02 18:14:29
#include <unistd.h>#include <stdio.h>#include <sys/types.h>#include <iconv.h> //convert function#include <sys/stat.h>#include <fcntl.h>#define S 2000void convert(const char *fromset,const char *toset,char *from,int from_len,char *to,int to_len){printf("%s is to be converted!\n",from);iconv_t cd,cdd;cd=iconv_open(toset,fromset);char **from2=&from;char **to2=&to;if(iconv(cd,from2,&from_len,to2,&to_len)==-1)printf("Convert fail!\n");elseprintf("Convert success!\n");iconv_close(cd);return ;}int main(){char from[]="你好";  char to[S];convert("GB2312","BIG5",from,strlen(from),to,S); //把gb2312轉換成big5printf("%s\n",to);return 0;}如果我把convert函數的參數“GB2312”和“BIG5”換成“UTF-8”和“GB2312”就可以成功,不知道為什么。謝謝了。
查看完整描述

2 回答

?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

顯然GBK無法轉換成BIG5。iconv的含義是將一個抽象的符號的編碼進行轉換。
但是如果一個符號比如“個”,可能在BIG5的編碼中不存在(繁體字中不同)
GBK包含的是簡體字,BIG5包含的是繁體字,Unicode包含全部,
所以
GBK->Unicode,Big5-Unicode (總是OK)
Unicode->GBK (當里面僅包含英文及簡體時OK)
Unicode->BIG5 (當里面僅包含英文及繁體時OK)
GBK->Big5 (基本上不行,除非某些字沒有特別的簡體字)

GBK->Big5是漢字的簡繁轉換,不是編碼轉換,簡體字轉繁體字還有一個問題,一個簡體字可能是對應多個繁體字,這種很難轉換正確。繁體字轉換成簡體字相對難度低。 

說白了,即使意思一樣,簡體和繁體也是兩個字,不能劃等號。應當使用簡繁通。


查看完整回答
反對 回復 2023-01-06
?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

1、iconv的含義是將一個抽象的符號的編碼進行轉換。
但是如果一個符號比如“個”,可能在BIG5的編碼中不存在(繁體字中不同)
GBK包含的是簡體字,BIG5包含的是繁體字,Unicode包含全部,
所以
GBK->Unicode,Big5-Unicode (總是OK)
Unicode->GBK (當里面僅包含英文及簡體時OK)
Unicode->BIG5 (當里面僅包含英文及繁體時OK)
GBK->Big5 (基本上不行,除非某些字沒有特別的簡體字)
GBK->Big5是漢字的簡繁轉換,不是編碼轉換,簡體字轉繁體字還有一個問題,一個簡體字可能是對應多個繁體字,這種很難轉換正確。繁體字轉換成簡體字相對難度低。 

2、#include <iconv.h>
size_t iconv(iconv_t cd,
char **inbuf, size_t *inbytesleft,
char **outbuf, size_t *outbytesleft);
函數原型, outbuf是一個 char **類型
在函數手冊中:
The iconv() function converts one multibyte character at a time, and for each character conversion it increments *inbuf and decrements
*inbytesleft by the number of converted input bytes, it increments *outbuf and decrements *outbytesleft by the number of converted
output bytes

 


查看完整回答
反對 回復 2023-01-06
  • 2 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號