中文字元相關問題

2022-03-14 05:43:02 字數 922 閱讀 7280

編碼綜述:

php並不是採用什麼編碼的問題, 而是你要輸出的編碼問題你把php寫成u8/gb2312它都可以正常使用, 區別在於, 在chr裡得到的是什麼, chr雖然可以返回乙個編碼大於127的字元, 但是這並不意味著php可以正常解析u8/gb2312, 乙個漢字在gb2312中由兩個位元組組成, 也就是ffff, 而在u8裡是ffffff, 而chr只拿到了第乙個ff, 也就是255, 它並不能直接得到任何漢字的直接編碼而實際上ascii和gb2312是相容的, 這也是為什麼chr可以正常取值的原因, 因為chr並不是為了可錄入的字串取值的, 它可以安全用於任何的二進位制編碼, 包括影象檔案給你個例子你看看echo ord('我');這裡只能返回230, 我是以u8儲存的檔案並輸出的, 它得到的只有230, 而230轉換成hex是e6,實際上u8中我的編碼是e68891, 這樣你就明白了吧, 其實它只拿到了第乙個位元組echo chr(0xe6).chr(0x88).chr(0x91);這裡例子可以在u8的情況下輸出我這個漢字, 你看到了, 這裡用了3次chr才得到這個漢字。

1.匹配出中文字元

案例:(檔案編碼為gbk)

<?php

$str = "你好,hel哈哈lo";

$dd=preg_match_all('/[\x80-\xff]./',$str,$match

);var_dump($match

);?>

輸出:array(1) }

註解:1.因為gbk的中文是單位元組存在,所以如果檔案編碼使用gbk,那麼可以用[\x80-\xff].來匹配;

2.因為unicode是雙位元組形式存在,所以如果檔案編碼為unicode,那麼就要用'/[\x-\x]/u'來匹配(使用4位16進製制時必須要加"{}"和模式修正符"u")。

中文字元相關問題

編碼綜述 php並不是採用什麼編碼的問題,而是你要輸出的編碼問題你把php寫成u8 gb2312它都可以正常使用,區別在於,在chr裡得到的是什麼,chr雖然可以返回乙個編碼大於127的字元,但是這並不意味著php可以正常解析u8 gb2312,乙個漢字在gb2312中由兩個位元組組成,也就是fff...

hibernate mysql 中文字元問題

中文亂碼 問號 1 我的eclipse預設字符集已經是utf8了 2 mysql6的資料庫預設字符集也是utf8 3 建表的語句也表明 engine myisam character set utf8 4 某一向為人謙和,不張揚,行事低調 人品也是絕對相容utf8的!這就怪了,刪表重建 drop 資...

scrapy中文字元問題

在scrapy spider的解析函式中,有時候通過如下兩種方式獲得的html資料中中文字元出現類似於 u3010 u6bdb u91cc這種格式的字元。respone.text或者 response.body.decode response.encoding 該字串產生的問題是因為將unicode...