青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

xiaoguozi's Blog
Pay it forword - 我并不覺的自豪,我所嘗試的事情都失敗了······習慣原本生活的人不容易改變,就算現狀很糟,他們也很難改變,在過程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛傳出去,很困難,也無法預料,人們需要更細心的觀察別人,要隨時注意才能保護別人,因為他們未必知道自己要什么·····

在PHP中查找中文字符,有兩種方案。

1、中文字符是gbk(gb2312)

有兩種解決方法

第一種:

將PHP保存為ASCII編碼,然后使用strpos查找,如:

strpos($curl_res, ‘哈哈’)

第二種:

將PHP保存為UTF-8無BOM編碼,然后轉換字符串編碼為UTF-8,再查找,如:

$curl_res = mb_convert_encoding($curl_res, ‘utf-8′, ‘gbk’);

mb_strpos($curl_res, ‘哈哈’);

2、中文字符是UTF-8

有兩種解決方法

第一種:

將PHP保存為UTF-8無BOM編碼,然后使用strpos查找,如:

strpos($curl_res, ‘哈哈’)

第二種:

將PHP保存為ASCII編碼,然后轉換字符串編碼為gbk,再查找,如:

$curl_res = mb_convert_encoding($curl_res, ‘gbk’, ‘utf-8′);

mb_strpos($curl_res, ‘哈哈’);

應該可以看出一些規律,就是:函數中的中文字符串參數的編碼和PHP文件保存格式的編碼一致,在使用函數時要考慮到!


     我生成的那個html文件被EmEditor認為UTF-8 with Signature。而好用的那個html文件被EmEditor認為UTF-8 without Signature.
    對于這兩種UTF-8格式的轉換,我查看了網上信息,點擊記事本,EmEditor等文本編輯器的另存為,當選擇了UTF-8的編碼格式時,Add a Unicode Signature(BOM)這個選項被激活,只要選擇上,我的文件就可以存為UTF-8 with Signature的格式。可是,問題就在于,我用java怎么讓我的文件直接生成為 UTF-8 with Signature的格式。
    開始上google搜索UTF-8 with Signature,BOM,Add a Unicode Signature等關鍵字。
http://www.unicode.org/unicode/faq/utf_bom.html#BOM
我大致了解了他們兩個的區別。
Q: What is a BOM?

A: A byte order mark (BOM) consists of the character code U+FEFF at the beginning of a data stream, where it can be used as a signature defining the byte order and encoding form, primarily of unmarked plaintext files. Under some higher level protocols, use of a BOM may be mandatory (or prohibited) in the Unicode data stream defined in that protocol.
http://mindprod.com/jgloss/bom.html
BOM
Byte Order Marks are special characters at the beginning of a Unicode file to indicate whether it is big or little endian, in other words does the high or low order byte come first. These codes also tell whether the encoding is 8, 16 or 32 bit. You can recognise Unicode files by their starting byte order marks, and by the way Unicode-16 files are half zeroes and Unicode-32 files are three-quarters zeros. Unicode Endian Markers
Byte-order mark Description
EF BB BF UTF-8
FF FE UTF-16 aka UCS-2, little endian
FE FF UTF-16 aka UCS-2, big endian
00 00 FF FE UTF-32 aka UCS-4, little endian.
00 00 FE FF UTF-32 aka UCS-4, big-endian.
There are also variants of these encodings that have an implied endian marker.
Unfortunately, often applications, even Javac.exe, choke on these byte order marks. Java Readers don't automatically filter them out. There is not much you can do but manually remove them.


http://cache.baidu.com/c?word=java%2Cbom&url=http%3A//tgdem530%2Eblogchina%2Ecom/&b=0&a=1&user=baidu
c、UTF的字節序和BOM
UTF-8以字節為編碼單元,沒有字節序的問題。UTF-16以兩個字節為編碼單元,在解釋一個UTF-16文本前,首先要弄清楚每個編碼單元的字節序。 例如收到一個“奎”的Unicode編碼是594E,“乙”的Unicode編碼是4E59。如果我們收到UTF-16字節流“594E”,那么這是 “奎”還是“乙”?

Unicode規范中推薦的標記字節順序的方法是BOM。BOM不是“Bill Of Material”的BOM表,而是Byte Order Mark。BOM是一個有點小聰明的想法:

在UCS編碼中有一個叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的編碼是FEFF。而FFFE在UCS中是不存在的字符,所以不應該出現在實際傳輸中。UCS規范建議我們在傳輸字節流前,先傳輸字符"ZERO WIDTH NO-BREAK SPACE"。

這樣如果接收者收到FEFF,就表明這個字節流是Big-Endian的;如果收到FFFE,就表明這個字節流是Little-Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被稱作BOM。

UTF-8不需要BOM來表明字節順序,但可以用BOM來表明編碼方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8編碼是EF BB BF(讀者可以用我們前面介紹的編碼方法驗證一下)。所以如果接收者收到以EF BB BF開頭的字節流,就知道這是UTF-8編碼了。

Windows就是使用BOM來標記文本文件的編碼方式的。


原來BOM是在文件的開始加了幾個字節作為標記。有了這個標記,一些協議和系統才能識別。好,看看怎么加上這寫字節。
終于在這里找到了
http://mindprod.com/jgloss/encoding.html 
UTF-8 
8-bit encoded Unicode. neé UTF8. Optional marker on front of file: EF BB BF for reading. Unfortunately, OutputStreamWriter does not automatically insert the marker on writing. Notepad can't read the file without this marker. Now the question is, how do you get that marker in there? You can't just emit the bytes EF BB BF since they will be encoded and changed. However, the solution is quite simple. prw.write( '\ufeff' ); at the head of the file. This will be encoded as EF BB BF.
DataOutputStreams have a binary length count in front of each string. Endianness does not apply to 8-bit encodings. Java DataOutputStream and ObjectOutputStream uses a slight variant of kosher UTF-8. To aid with compatibility with C in JNI, the null byte '\u0000' is encoded in 2-byte format rather than 1-byte, so that the encoded strings never have embedded nulls. Only the 1-byte, 2-byte, and 3-byte formats are used. Supplementary characters, (above 0xffff), are represented in the form of surrogate pairs (a pair of encoded 16 bit characters in a special range), rather than directly encoding the character.
 
prw.write( '\ufeff' );就是這個。
于是我的代碼變為:
public void htmlWrite(String charsetName) {
        try {
            out = new BufferedWriter(new OutputStreamWriter(
                        new FileOutputStream(outFileName), "UTF-8"));
            out.write('\ufeff');
            out.write(res);
            out.flush();

            if (out != null) {
                out.close();
            }
        } catch (Exception e) {
            try {
                if (out != null) {
                    out.close();
                }
            } catch (IOException e1) {
                System.out.print("write errors!" + e);
            }

            System.out.print("write errors!" + e);
        }
    }
問題解決。

posted on 2013-02-04 15:38 小果子 閱讀(2952) 評論(0)  編輯 收藏 引用 所屬分類: 學習筆記
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产伦精品一区| 亚洲网站在线播放| 久久亚洲午夜电影| 久久久久国产精品www | 午夜精品视频在线观看| 一本一本a久久| av成人动漫| 午夜久久电影网| 久久人人精品| 亚洲精品乱码久久久久久按摩观| 久久久水蜜桃| 亚洲啪啪91| 亚洲欧美日韩网| 欧美激情视频一区二区三区不卡| 久久www成人_看片免费不卡| 欧美亚洲一区二区在线| 欧美精品1区2区| 国一区二区在线观看| 99热在这里有精品免费| 一区二区三区毛片| 一本一本久久| 亚洲国产精品日韩| 亚洲欧美在线aaa| 欧美深夜福利| 最新日韩精品| 欧美成年人视频网站| 午夜精品视频一区| 国产精品xxxxx| 亚洲美女毛片| 亚洲人www| 欧美经典一区二区三区| 亚洲国产精品女人久久久| 久久久久一区二区| 欧美制服丝袜| 国产亚洲一区二区三区在线播放| 亚洲国产精品va在看黑人| 美女精品视频一区| 欧美高清一区| 国产日韩欧美精品在线| 亚洲一区二区在线免费观看| 亚洲免费播放| 国产精品一区免费视频| 亚洲午夜一区二区| 亚洲一区二区三区免费在线观看 | 亚洲福利免费| 久久综合色一综合色88| 亚洲激情视频在线| 一区二区三区在线视频播放| 欧美一区二区视频观看视频| 性久久久久久久久| 亚洲精品裸体| 欧美诱惑福利视频| 亚洲精品五月天| 欧美在线一级视频| 99热这里只有精品8| 亚洲一区三区电影在线观看| 国产自产精品| 在线一区二区日韩| 亚洲国产精品传媒在线观看| 在线一区亚洲| 亚洲每日更新| 久久综合图片| 久久精视频免费在线久久完整在线看| 久久精品视频在线观看| 亚洲一级黄色av| 免费不卡中文字幕视频| 欧美一级电影久久| 欧美日韩国产综合视频在线观看中文 | 亚洲精选视频免费看| 在线成人av.com| 欧美中文在线字幕| 欧美一二三视频| 黄色亚洲精品| 香蕉久久久久久久av网站| 亚洲欧美另类中文字幕| 欧美午夜片在线观看| 一区二区三区精品视频| 欧美亚洲综合另类| 亚洲福利精品| 欧美激情国产日韩| 亚洲视频你懂的| 久久综合婷婷| 亚洲免费影视| 欧美成人精品福利| 欧美一区日本一区韩国一区| 国产日韩亚洲| 欧美国产在线电影| 在线综合亚洲| 噜噜噜91成人网| 亚洲男人的天堂在线| 激情五月***国产精品| 免费观看在线综合色| 一区二区三区高清在线观看| 欧美中文在线字幕| 亚洲国产mv| 永久免费精品影视网站| 欧美视频三区在线播放| 欧美aaaaaaaa牛牛影院| 亚洲欧美一区二区三区久久 | 最新高清无码专区| 国产乱肥老妇国产一区二| 欧美岛国在线观看| 久久三级视频| 久久av老司机精品网站导航| 亚洲另类黄色| 最新中文字幕一区二区三区| 男女激情久久| 欧美成人国产| 亚洲国产裸拍裸体视频在线观看乱了| 久久美女性网| 亚洲激情av在线| 亚洲女ⅴideoshd黑人| 久久久久九九视频| 欧美日韩国产综合视频在线观看中文 | 国产精品久久久久永久免费观看 | 老司机精品视频一区二区三区| 久久精品理论片| 久久久久久高潮国产精品视| 欧美电影免费观看| 国产日韩综合| 一本色道88久久加勒比精品 | 亚洲欧美一区二区三区在线| 久热精品在线| 国产亚洲成av人在线观看导航| 亚洲精品久久久蜜桃| 久久精品国产精品亚洲综合| 亚洲精品在线看| 欧美精品18| 欧美凹凸一区二区三区视频| 欧美精品久久久久久久免费观看 | 黄色亚洲网站| 亚洲欧洲日本国产| 亚洲欧美精品suv| 久久久99爱| 亚洲影视在线| 欧美视频免费在线观看| 亚洲开发第一视频在线播放| 亚洲欧美综合精品久久成人| 久久米奇亚洲| 亚洲免费在线看| 国产精品麻豆欧美日韩ww| 亚洲精品自在久久| 欧美1区免费| 久久av一区二区三区| 国产精品久久久久久久电影| 日韩天堂在线视频| 毛片基地黄久久久久久天堂| 亚洲专区免费| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲欧洲另类国产综合| 久久夜色精品国产亚洲aⅴ| 在线亚洲欧美| 国产精品hd| 西瓜成人精品人成网站| 亚洲一区二区三区视频播放| 欧美日韩亚洲一区三区 | 日韩天堂在线视频| 亚洲精一区二区三区| 欧美成人免费网| 91久久综合| 99国产精品国产精品久久 | 亚洲尤物影院| 激情丁香综合| 亚洲黄色大片| 欧美日韩亚洲一区二区三区在线观看 | 久久一区免费| 欧美日韩一区二区视频在线| 亚洲在线观看免费| 久久手机免费观看| 99国内精品久久| 99热在这里有精品免费| 国产欧美日韩精品a在线观看| 久久久久久久精| 欧美日韩在线免费观看| 另类亚洲自拍| 国产欧美日韩在线观看| 亚洲高清免费| a91a精品视频在线观看| 激情综合网址| 亚洲图片欧美午夜| 夜久久久久久| 欧美韩日一区| 91久久久久久| 亚洲精品午夜| 久久综合狠狠综合久久激情| 欧美中文在线视频| 国产精品午夜在线观看| 亚洲影院一区| 欧美一区亚洲一区| 国产亚洲va综合人人澡精品| 宅男噜噜噜66一区二区| 亚洲日本理论电影| 欧美美女bbbb| 亚洲美女精品久久| 夜夜嗨一区二区| 国产精品久久久久毛片大屁完整版 | 999亚洲国产精| 性欧美长视频| 国产精品久久久久久av下载红粉| 宅男噜噜噜66一区二区|