2015-04-23 13 views
1

我會如何閱讀C中的文件,然後迭代每個字符,以便我可以評估它?因此,例如,我會給輸入文件:5 ≠ 10,評估爲5不等於10,並打印出false。現在我可以做評估部分,但我不確定如何在C中讀取unicode字符。我提出這個問題,因爲我已經寫了一個更大的詞法分析器,並且我希望它支持unicode,但是我想要在較小規模的項目上嘗試一下,看看它是如何發展的。用C語言讀取一個文件爲utf-8並遍歷每個字符?

+0

你在使用哪個平臺? –

+0

'≠'字符是三個字節:E2 89 A0。 「10」是兩個字節:31 30.解析它們有什麼區別? – Michas

+0

@Michas一個有3個字節,另一個有2個字節?我不知道 –

回答

2

UTF-8是Unicode的編碼格式。你真正感興趣的是解析文本並分離出每個字節。然後你需要計算Unicode碼點來確定字符。

最終你需要:

  1. ,可以區分UTF-8字符邊界解析器。
  2. 將編碼爲UTF-8的數據轉換爲Unicode代碼點的轉換程序。
  3. 以及代碼點的參考列表及其語義含義。

不等於符號是Unicode代碼點U + 2260。它以UTF-8編碼爲0xE2 0x89 0xA0。

編輯:你應該使用一個庫來解析UTF-8文本。您應該關注的是找到與您的應用程序相關的代碼點,並在您的應用程序中解釋它們的含義。

+0

寫一個解析器和一個翻譯器等是一個很大的任務嗎? –

+0

我還沒有做到。但是你必須找到多字節字符的字符邊界,然後從多個字節中取出單獨的位(和位組),並將其轉換爲Unicode代碼點。您應該先閱讀UTF-8如何編碼代碼點。 –

+0

嗯,謝謝。我會查看一些規範,以及一些關於unicode的文章......希望我能從那裏進入正確的方向。如果一切都失敗了,我只會使用現有的庫。你的回答似乎足以讓我開始,所以我會接受它,歡呼:) –

相關問題