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

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>
            亚洲黄网站在线观看| 最新日韩精品| 国产精品久久久久99| 欧美在线亚洲在线| 一区二区三区四区国产| 美女主播视频一区| 另类图片国产| 久久久久一区二区三区| 伊人精品久久久久7777| 亚洲激情综合| 夜夜嗨av一区二区三区| 欧美xart系列高清| 免费国产一区二区| 欧美激情亚洲综合一区| 国产精品乱码妇女bbbb| 国产精品一区二区久久国产| 国产毛片一区二区| 亚洲国产mv| 亚洲精品资源| 99re6这里只有精品| 国产永久精品大片wwwapp| 国产乱人伦精品一区二区| 国产欧美精品国产国产专区| 国产一区二区主播在线| 狠狠色噜噜狠狠色综合久| 亚洲国产精品t66y| 精品成人乱色一区二区| 亚洲国产mv| 一区二区三区欧美| 亚洲欧美日韩在线高清直播| 欧美一区二区三区久久精品茉莉花| 性做久久久久久免费观看欧美| 欧美专区日韩专区| 另类综合日韩欧美亚洲| 久久人人97超碰精品888| 亚洲第一在线视频| 一区二区高清| 亚洲一区二区高清| 久久精品国产一区二区三区| 欧美不卡三区| 国产日韩在线看片| 亚洲人精品午夜| 久久久久成人网| 最新日韩在线| 欧美亚洲一区二区在线| 久久野战av| 国产精品女主播一区二区三区| 国产一区再线| 亚洲无人区一区| 亚洲图片欧美一区| 国产精品久久久久久久久婷婷| 一区二区高清视频| 亚洲欧美春色| 香蕉成人久久| 欧美日韩中文字幕在线视频| 亚洲精品综合精品自拍| 久久午夜精品| 久久久天天操| 麻豆精品在线观看| 欧美激情久久久| 亚洲日本欧美日韩高观看| 亚洲电影中文字幕| 亚洲精品护士| 亚洲视频观看| 久久爱www久久做| 欧美大片免费久久精品三p | 在线观看视频免费一区二区三区| 黄色一区二区在线观看| 亚洲国产高清一区| 亚洲一区二区精品视频| 久久国产免费看| 久久永久免费| 99视频精品免费观看| 欧美在线一二三| 欧美日韩精品一区二区| 狠狠色狠狠色综合系列| 夜夜爽av福利精品导航 | 一本色道久久综合| 亚洲一区三区电影在线观看| 欧美一区二区三区视频在线观看| 欧美国产大片| 国内精品久久久久久久影视麻豆 | 欧美在线观看一区二区| 欧美freesex8一10精品| 亚洲一区二区精品在线观看| 免费日韩精品中文字幕视频在线| 国产精品免费一区二区三区观看| 亚洲美女视频网| 久久人人爽国产| 嫩草成人www欧美| 亚洲视频欧美视频| 欧美国产日本在线| 在线观看成人小视频| 亚洲黄色三级| 久久亚洲精品视频| 欧美在线观看一区二区| 欧美激情va永久在线播放| 国产欧美一区二区精品仙草咪| 亚洲免费av观看| 欧美成人一二三| 欧美一区1区三区3区公司| 国产精品久久久久久久久免费樱桃| 亚洲精品美女91| 欧美黑人国产人伦爽爽爽| 中文亚洲字幕| 欧美jizzhd精品欧美巨大免费| 韩国成人理伦片免费播放| 午夜欧美精品| 亚洲欧美三级伦理| 国产麻豆成人精品| 欧美中文字幕视频| 亚洲欧洲av一区二区| 久久精品成人一区二区三区| 国产麻豆日韩| 久久视频这里只有精品| 欧美中文字幕久久| 国内一区二区三区在线视频| 噜噜噜久久亚洲精品国产品小说| 久久久久久欧美| 激情文学综合丁香| 欧美国产1区2区| 欧美日韩理论| 亚洲欧美电影在线观看| 毛片一区二区| 欧美成人国产一区二区| 久久精品国产第一区二区三区| 夜色激情一区二区| 你懂的视频一区二区| 久久亚洲色图| 国产主播喷水一区二区| 亚洲欧美日韩综合国产aⅴ| 中日韩视频在线观看| 欧美成人激情在线| 亚洲成色777777在线观看影院| 国产在线成人| 久久久久久91香蕉国产| 久久久久五月天| 在线观看日韩精品| 你懂的网址国产 欧美| 欧美激情1区2区3区| 亚洲国内在线| 欧美国产日韩精品免费观看| 亚洲电影观看| 一本色道久久88亚洲综合88| 欧美日韩精品免费观看| 夜夜嗨av色一区二区不卡| 亚洲女人天堂成人av在线| 国产精品五区| 欧美在线日韩精品| 欧美www视频在线观看| 亚洲人成亚洲人成在线观看| 欧美日韩亚洲网| 亚洲免费在线视频一区 二区| 久久精品一区二区三区不卡牛牛| 国内偷自视频区视频综合| 亚洲综合日韩在线| 欧美成人免费小视频| 亚洲国产精品美女| 欧美精品色一区二区三区| 夜夜嗨av色综合久久久综合网| 欧美一区二区三区免费大片| 极品少妇一区二区三区精品视频| 另类尿喷潮videofree | 久久久噜噜噜久久中文字幕色伊伊| 黄色日韩网站视频| 欧美极品一区二区三区| 亚洲性线免费观看视频成熟| 久久久噜噜噜久久| 日韩小视频在线观看| 国产乱码精品一区二区三区不卡 | 亚洲无人区一区| 免费亚洲视频| 午夜精品福利电影| 欲色影视综合吧| 欧美午夜激情视频| 久久人人97超碰人人澡爱香蕉| 亚洲精品麻豆| 久久深夜福利免费观看| 99在线热播精品免费| 国产日韩精品视频一区二区三区 | 亚洲第一福利社区| 国产精品v日韩精品| 久热精品视频在线观看| 亚洲一本大道在线| 亚洲国产精品欧美一二99| 久久本道综合色狠狠五月| 亚洲美女精品久久| 伊人久久噜噜噜躁狠狠躁| 欧美日韩中文字幕在线| 女女同性精品视频| 久久久精品国产免费观看同学| 一本色道久久综合狠狠躁的推荐| 亚洲二区视频| 久久影院亚洲| 久久精品二区亚洲w码| 亚洲天堂成人在线观看| 亚洲精品日韩综合观看成人91| 国内视频精品| 海角社区69精品视频| 国产欧美日本|