最近也一直在和字串轉換打交道,比較常用到的就是這兩個php自帶的字串轉換.那麼接下來我會以一些場景來使用這兩個字串編碼轉換函數
使用場景:
請求:ajax POST請求
伺服器編碼 GBK
頁面編碼GBK
問題:因為ajax請求發出的資料都是utf-8格式的編碼,因此我們必須將utf-8編碼的資料進行一個轉換
解決方案1: 使用iconv
<code><?php <span>$postStr</span> = file_get_contents(<span>"file://input"</span>); <span>//</span> 将post的数据以字符流的形式读取 <span>$inCharset</span> = <span>"UTF-8"</span>; <span>$outCharset</span> = <span>"GBK"</span>; <span>$postStr</span> = iconv(<span>$inCharset</span>,<span>$outCharset</span>,<span>$postStr</span>); <span>//</span> 将字符串转换为<span>$_POST</span>形式的数组 parse_str(<span>$postStr</span>,<span>$_post</span>); </code>
解決辦法2: 使用mb_convert_encode()
<code><?php <span>$postStr</span> = file_get_contents(<span>"file://input"</span>); <span>//</span> 将post的数据以字符流的形式读取 <span>$inCharset</span> = <span>"UTF-8"</span>; <span>$outCharset</span> = <span>"GBK"</span>; <span>$postStr</span> = mb_convert_encode(<span>$postStr</span>,<span>$outCharset</span>,<span>$inCharset</span>); <span>//</span> 将字符串转换为<span>$_POST</span>形式的数组 parse_str(<span>$postStr</span>,<span>$_post</span>); </code>
以上兩種方法均可以進行字串轉碼,然而有一點需要注意,如果將轉換好的字串轉回去,切不可兩種方法混用.否則中文字元可能會出現階段的問題。
範例:
<code><?php <span>$postStr</span> = file_get_contents(<span>"file://input"</span>); // 将post的数据以字符流的形式读取 <span>$inCharset</span> = <span>"UTF-8"</span>; <span>$outCharset</span> = <span>"GBK"</span>; <span>$postStr</span> = mb_convert_encode(<span>$postStr</span>,<span>$outCharset</span>,<span>$inCharset</span>); // 转换为原来的字符串 <span>$postStr</span> = iconv(<span>$outCharset</span>,<span>$inCharset</span>.<span>"//IGNORE"</span>,<span>$postStr</span>); // 如果源 <span>$postStr</span>为 UTF-<span>8</span>的 <span>'我是谁?'</span> // 那么新的 <span>$postStr</span> 为 <span>'?'</span> ,如果不加 <span>"//IGNORE"</span> 结尾 则会跑出一个异常 </code>
因此千萬不要嵌套兩個方法進行相互轉換。
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });以上就介紹了iconv 與 mb_convert_string 字串轉換,包括了ajax方面的內容,希望對PHP教程有興趣的朋友有所幫助。