国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Home php教程 php手冊 php iconv() : Detected an illegal character in input string

php iconv() : Detected an illegal character in input string

Jun 06, 2016 pm 08:35 PM
iconv

PHP傳給JS字符串用ecsape轉(zhuǎn)換加到url里,又用PHP接收,再用網(wǎng)上找的unscape函數(shù)轉(zhuǎn)換一下,這樣得到的字符串是UTF-8的,但我需要的是GB2312,于是用iconv轉(zhuǎn)換

開始是這樣用的
$str = iconv('UTF-8', 'GB2312', unescape(isset($_GET['str'])? $_GET['str']:''));
上線后報一堆這樣的錯:iconv() : Detected an illegal character in input string

考慮到GB2312字符集比較小,服務器空間,換個大的吧,于是改成GBK:
$str = iconv('UTF-8', 'GBK', unescape(isset($_GET['str'])? $_GET['str']:''));
上線后還是報同樣的錯!

再認真讀手冊,發(fā)現(xiàn)有這么一段:
If you append the string //TRANSLIT to out_charset transliteration is activated. This means that when a character can't be represented in the target charset, it can be approximated through one or several similarly looking characters. If you append the string //IGNORE, characters that cannot be represented in the target charset are silently discarded. Otherwise, str is cut from the first illegal character.
于是改成:
$str = iconv('UTF-8', 'GBK//IGNORE', unescape(isset($_GET['str'])? $_GET['str']:''));
本地測試//IGNORE能忽略掉它不認識的字接著往下轉(zhuǎn),并且不報錯,而//TRANSLIT是截掉它不認識的字及其后面的內(nèi)容,并且報錯。//IGNORE是我需要的。
現(xiàn)在等待上線看結(jié)果(這樣不是好的做法,繼續(xù)琢磨手冊,上網(wǎng)搜搜看),香港虛擬主機,呵呵。。。

在網(wǎng)上找到下面這篇文章,發(fā)現(xiàn)mb_convert_encoding也可以,但效率比iconv差。


轉(zhuǎn)換字符串編碼iconv與mb_convert_encoding的區(qū)別

iconv — Convert string to requested character encoding(PHP 4 >= 4.0.5, PHP 5)
mb_convert_encoding — Convert character encoding(PHP 4 >= 4.0.6, PHP 5)

用法:
string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )
需要先啟用 mbstring 擴展庫,在 php.ini里將; extension=php_mbstring.dll 前面的 ; 去掉

string iconv ( string in_charset, string out_charset, string str )
注意:
第二個參數(shù),除了可以指定要轉(zhuǎn)化到的編碼以外,還可以增加兩個后綴://TRANSLIT 和 //IGNORE,
其中:
//TRANSLIT 會自動將不能直接轉(zhuǎn)化的字符變成一個或多個近似的字符,
//IGNORE 會忽略掉不能轉(zhuǎn)化的字符,而默認效果是從第一個非法字符截斷。
Returns the converted string or FALSE on failure.

使用:
1. 發(fā)現(xiàn)iconv在轉(zhuǎn)換字符"-"到gb2312時會出錯,香港服務器租用,如果沒有ignore參數(shù),所有該字符后面的字符串都無法被保存。不管怎么樣,這個"-"都無法轉(zhuǎn)換成功,無法輸出。另外mb_convert_encoding沒有這個bug.
2. mb_convert_encoding 可以指定多種輸入編碼,它會根據(jù)內(nèi)容自動識別,但是執(zhí)行效率比iconv差太多;如:$str = mb_convert_encoding($str,"euc-jp","ASCII,JIS,EUC-JP,SJIS,UTF- 8");“ASCII,JIS,EUC-JP,SJIS,UTF-8”的順序不同效果也有差異
3. 一般情況下用 iconv,只有當遇到無法確定原編碼是何種編碼,或者iconv轉(zhuǎn)化后無法正常顯示時才用mb_convert_encoding 函數(shù)

from_encoding is specified by character code name before conversion. it can be array or string - comma separated enumerated list. If it is not specified, the internal encoding will be used.

$str = mb_convert_encoding($str, "UCS-2LE", "JIS, eucjp-win, sjis-win");
$str = mb_convert_encoding($str, "EUC-JP', "auto");

例子:
$content = iconv("GBK", "UTF-8", $content);
$content = mb_convert_encoding($content, "UTF-8", "GBK");
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)