亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
123下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 11116 | 回復(fù): 20
打印 上一主題 下一主題

[C] 【討論】格式文本中的分隔符 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2010-06-02 00:03 |只看該作者 |倒序?yàn)g覽
在應(yīng)用系統(tǒng)中,經(jīng)常會(huì)用格式文本(每條記錄一行、同一行記錄各字段間用分隔符分開(kāi))進(jìn)行數(shù)據(jù)傳輸或處理。這是一種很通用也很方便的做法。
但是在某些情況下,這種方法也會(huì)存在問(wèn)題。
通常,我們使用的分隔符都是單個(gè)ASCII字符(常用的有'|'、';'、','等),如果數(shù)據(jù)文件中的數(shù)據(jù)也都是單字節(jié)字符,那不會(huì)存在問(wèn)題。但當(dāng)數(shù)據(jù)中含有多字節(jié)字符,例如漢字時(shí),問(wèn)題就出來(lái)了!很有可能某個(gè)漢字的一半剛好就是分隔符。這種情況可能并不是每天都能遇到,但是偶爾遇到一次就夠你受了!很可能數(shù)據(jù)往數(shù)據(jù)庫(kù)里加載的時(shí)候報(bào)數(shù)據(jù)非法、或者直接就core了。

大家在平時(shí)是如何處理這個(gè)問(wèn)題的?

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2010-06-02 06:47 |只看該作者
本帖最后由 xiexiecn 于 2010-06-02 06:50 編輯

這個(gè)稍微注意一下漢字編碼就能解決了吧。比如:

GB2312中漢字的編碼范圍為,第一字節(jié)0xB0-0xF7(對(duì)應(yīng)十進(jìn)制為176-247),第二個(gè)字節(jié)0xA0-0xFE(對(duì)應(yīng)十進(jìn)制為160-254)。
如果用這個(gè)編碼,就不存在你說(shuō)的問(wèn)題。

GBK是GB2312的擴(kuò)展,是向上兼容的,因此GB2312中的漢字的編碼與GBK中漢字的相同。另外,GBK中還包含繁體字的編碼,它與Big5編碼之間的關(guān)系我還沒(méi)有弄明白,好像是不一致的。GBK中每個(gè)漢字仍然包含兩個(gè)字節(jié),第一個(gè)字節(jié)的范圍是0x81-0xFE(即129-254),第二個(gè)字節(jié)的范圍是0x40-0xFE(即64-254)。GBK中有碼位23940個(gè),包含漢字21003個(gè)。

如果是這個(gè)編碼,分析文件的時(shí)候每次讀出一個(gè)字節(jié)都判斷一下,是不是大于128,如果是的話,就把這個(gè)字節(jié)當(dāng)作漢字的第一個(gè)字節(jié),直接讀出下一個(gè)字節(jié),不當(dāng)作分隔符。

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2010-06-02 10:02 |只看該作者
用\n作為分隔符不是很好嗎!

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2010-06-02 10:24 |只看該作者
回復(fù) 2# xiexiecn


    問(wèn)題就在這里,最常用的分隔符('|'、'^')都是在0x40 至0x7E這個(gè)范圍內(nèi)。每次找到分隔符后還要去判斷前一個(gè)字節(jié)的值太羅嗦了。

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2010-06-02 10:26 |只看該作者
用\n作為分隔符不是很好嗎!
liexusong 發(fā)表于 2010-06-02 10:02



    \n只能作為記錄分隔符,每條記錄占用一行。但是一條記錄是由多個(gè)字段組成的,各字段間還有分隔符

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2010-06-02 10:39 |只看該作者
回復(fù) 4# sunlan


        我的理解和你不一樣,不是讀到分隔符的時(shí)候去判斷前一個(gè)字節(jié),而是每次讀出一個(gè)字節(jié)的時(shí)候就判斷,如果是>128的,那么直接就讀出下一個(gè)(這個(gè)字節(jié)不作分隔符判斷),直接表示這是一個(gè)完整的漢字。如果是'|'或者'^',那肯定就是分隔符了,不必再去判斷前面一個(gè)字節(jié),因?yàn)橐呀?jīng)判斷過(guò)了。

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2010-06-02 10:47 |只看該作者
回復(fù) 6# xiexiecn


    一般都是直接用strchr()來(lái)定位分隔符的。你說(shuō)的也是一種解決思路

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2010-06-02 10:56 |只看該作者
用xml,拋棄|。

把有|的漢字過(guò)濾一遍,也是個(gè)方法。


[倈] [億] [剕] [厊] [唡] [噟] [坾] [墊] [妡] [媩]
[寍] [峾] [巪] [弢] [恷] [憒] [抾] [搢] [攟] [晐]
[東] [梶] [榺] [檤] [殀] [渱] [潀] [瀨] [焲] [爘]
[獆] [珅] [瑋] [瓅] [畖] [瘄] [皘] [眧] [瞸] [硘]
[磡] [祙] [秥] [穦] [竱] [箌] [簗] [粅] [紎] [絴]
[緗] [縷] [纜] [羭] [聕] [脇] [膢] [舼] [苵] [莬]
[葇] [蓔] [蕓] [藎] [蘾] [蛗] [蝲] [蟶] [衸] [褆]
[襹] [觸] [詜] [諀] [謡] [讄] [貄] [質(zhì)] [趞] [踻]
[軀] [輡] [迀] [遼] [鄚] [醸] [鈢] [銃] [鋦] [鍇]
[鎩] [鐋] [鑭] [閨] [陓] [雦] [靯] [韡] [顋] [飢]
[饇] [駖] [騶] [髚] [魘] [鮸] [鰘] [鱸] [鴟] [鵿]
[鷟] [鹼] [鼃] [齶]

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2010-06-02 10:59 |只看該作者
用xml文件體積太大、處理速度慢。
數(shù)據(jù)文件里有些是地名、企業(yè)名稱,什么字都可能出現(xiàn)。

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2010-06-02 11:03 |只看該作者
我們讓客戶 王珅 改名 王王申
做他的再生父母
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP