【发布时间】:2015-10-16 10:53:20
【问题描述】:
当我偶然发现 unicode 字符时,问题就开始了。例如,阿博尔。现在我通过询问i 位置的字符,即string (i:i) 是否小于 127 来处理这个问题。这意味着它属于 ASCII 表,因此我确定string (i:i) 是 完整的单个字符。在另一种情况下,(>= 127) 和我的示例 'árbol',string (1,2) 是 完整字符。
我认为我处理字符串的方式为我的实际目的解决了问题(处理西班牙语、波兰语和俄语的文件),但在处理汉字可能占用最多 4 个字节的情况下,我会有问题。
在 fortran 中有没有办法在字符串中挑出 unicode 字符?
【问题讨论】:
-
您的 Fortran 处理器是否支持 ISO 10646(即 UCS-4)字符类型?如果是这样,并且您使用该字符类型,那么引用单个字符是一个简单的操作。
-
假设它确实支持,我如何引用单个字符。是否与使用模块 ISO_FORTRAN_ENV 有关系
-
string(i:i)(我确实说过这是微不足道的!)对于 ISO 10646 字符类型,字符串中的每个字符都代表一个 unicode 代码点。可使用SELECTED_CHAR_KIND内在函数获得用于 ISO 10646 字符类型的值。 -
你确实说过这很简单,但我仍然无法让我的字符串用字符串(i:i)表示一个while代码点,即使我正在使用:
integer, parameter :: ucs4 = selected_char_kind ('ISO_10646')@987654329 @ -
对于 árbol 我现在使用字符串 (1:1) 得到一个 'Ã'。 @IanH
标签: string unicode character-encoding fortran