2012-05-04 86 views
2

我想使用ICU C接口規範一個字符串。Unicode規範化通過ICU4C

看着unorm2_normalize,我有一些問題。

  1. UNormalizer2實例 - 在完成它之後如何處置它?

  2. 如果緩衝區不夠大,無法分解或重新組合?檢查錯誤代碼是否爲U_BUFFER_OVERFLOW_ERROR的正常方法是? U_STRING_NOT_TERMINATED_WARNING是否適用?結果字符串是否以空字符結尾?如果返回錯誤,我是否重新分配內存並重試?重新開始,似乎浪費時間。

+0

這個問題與您的[other one](http://stackoverflow.com/q/10447452/777186)不同嗎?至少第二部分似乎已經在那裏得到了答覆,但請確認我是否有錯。 – jogojapan

回答

0
  1. unorm2_close()。請注意,您不應該釋放通過unorm2_getInstance()獲取的實例。
  2. 通常,大多數ICU API都可以傳遞NULL緩衝區和0長度作爲輸入,這應該會導致U_BUFFER_OVERLOW_ERROR和一個填充了所需長度的變量。如果您獲得了U_STRING_NOT_TERMINATED_WARNING,那就意味着:數據已填充但未終止。