作者 主題: 檢查中文字  (閱讀 4209 次)

0 會員 與 1 訪客 正在閱讀本文。

洋蔥叔叔

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 830
    • 檢視個人資料
    • 洋蔥叔叔的隨意漫談電腦、網路、.NET、軟體本地化、雜七雜八
檢查中文字
« 於: 2005-05-13 01:01 »
請教各位前輩如果我想用Perl(或任何語言)寫一支程式檢查中文字要如何著手?

具體來說好了,我現在有一群非常大量的XML格式的文件(都UTF-8, 之後會轉成HTML),現在有一個問題就是我必須檢查它一些格式上是否一致的問題,比如說一個就是中文參雜英文的話中英文之間一定要空格,可是如果是中文標點符號又不用。

又或者是有沒有人知道有已經開發好可以達到類似功能的軟體?

感激不盡

thyme

  • 老人組
  • 俺是博士!
  • *****
  • 文章數: 1281
    • 檢視個人資料
檢查中文字
« 回覆 #1 於: 2005-05-13 09:25 »
咦,UTF-8  的中英字的編碼不是沒有重覆嗎?
那不是很好判斷?

洋蔥叔叔

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 830
    • 檢視個人資料
    • 洋蔥叔叔的隨意漫談電腦、網路、.NET、軟體本地化、雜七雜八
檢查中文字
« 回覆 #2 於: 2005-05-13 23:11 »
嗯大概吧,但可以給個具體的方向嗎?
比如說有哪些Perl模組比較好用
對我可以自己去找自己去試,我只是想問問看有沒有人有碰過類似的東西。

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5411
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
檢查中文字
« 回覆 #3 於: 2005-05-14 09:54 »
先一個 byte 一個 byte 讀進來.
只要第一個 bit 是 1, 就表示下一個 byte 仍屬於同一個 utf-8 word.

可參考
http://www.faqs.org/rfcs/rfc3629.html

所以你可以很容易的知道那幾個 byte 合起來才是一個字.
只有 1 個 byte 的 utf-8 就一定不是中文.

另外, 你要自己去查 "標點符號" 的 utf-8 碼. 然後在非英文且非標點符號的字後面,  如果是非中文且非空白, 就自己加上空白.

我想... 應該沒什麼現成的東西可以用吧.

thyme

  • 老人組
  • 俺是博士!
  • *****
  • 文章數: 1281
    • 檢視個人資料
檢查中文字
« 回覆 #4 於: 2005-05-16 09:33 »
沒記錯的話,有支援多國語言的都會有一個支援多國語言的字串運算的函數,
利用這點來判斷英、數、中文字應該比較方便些。