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

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

請問二者使用起來有什么不同嗎?

請問二者使用起來有什么不同嗎?

PHP
精慕HU 2023-04-14 18:14:07
使用iconv進行編碼轉換時使用的時UTF8,而不是UTF-8,我測試了下發現UTF8和UTF-8在iconv和mb_str中結果是一樣的,如: iconv('UTF8', 'GB2312', '測試'); 和 iconv('UTF-8', 'GB2312', '測試');。但是Google了下發現也有人因為使用UTF8而不是UTF-8遇到問題的情況 。
查看完整描述

2 回答

?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

根據 libiconv-1.14/lib/encodings.def , UTF-8和UTF8都會被識別成utf8編碼,所以沒有區別,所以所有使用libiconv的程序都沒問題,比如php的iconv庫。

/* General multi-byte encodings */DEFENCODING(( "UTF-8",                  /* IANA, RFC 2279 */
            /*"UTF8",                      JDK 1.1 */
            /*"CP65001",                   Windows */
            ),   
            utf8,
            { utf8_mbtowc, NULL },        { utf8_wctomb, NULL })#ifdef USE_HPUX_ALIASESDEFALIAS(     "UTF8",                   /* HP-UX */
            utf8)#endif

根據 ext/mbstring 的 mbfilter_utf8.c ,UTF-8 (作為name/mimename) 和 UTF8 (作為alias)也都可以被識別,所以也一樣。

static const char *mbfl_encoding_utf8_aliases[] = {"utf8", NULL};const mbfl_encoding mbfl_encoding_utf8 = { 
    mbfl_no_encoding_utf8,    "UTF-8",    "UTF-8",
    (const char *(*)[])&mbfl_encoding_utf8_aliases,
    mblen_table_utf8,
    MBFL_ENCTYPE_MBCS
};

順便說一下,mysql不識別 utf-8,必須用utf8。

mysql> create table t1 (id int primary key, name int) character set utf-8;
ERROR 1115 (42000): Unknown character set: 'utf'


查看完整回答
反對 回復 2023-04-17
?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

你好,我在windows環境下測試了一行代碼

iconv('UTF8', 'GB2312', '測試');

得到一個警告

Notice: iconv(): Wrong charset, conversion from `UTF8' to `GB2312' is not allowed

這說明應該使用UTF-8這種形式才是正確的。

mbstring.supported-encodings 提到的mbstring支持的編碼中也只有UTF-8這種形式。

或許是你可以嘗試修改一下php.ini

error_reporting = E_ALL | E_STRICTdisplay_errors = On

也許就可以看到警告信息了。

根據felix021的提示,再測試兩行代碼

print_r(mb_list_encodings());print_r(mb_encoding_aliases('UTF8'));

可知mb中的確是做為別名處理了。


查看完整回答
反對 回復 2023-04-17
  • 2 回答
  • 0 關注
  • 115 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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