我从互联网上抓取了一些文本,并将其放入 UTF8String 中。我可以正常使用这个字符串,但是当我选择一些不属于 UTF8 标准的特定字符(带重音的奇怪字符,比如我的 ú)时,我收到错误,说我使用了无效索引。仅当字符串包含奇怪字符时才会发生这种情况;我的代码适用于不包含奇怪字符的普通字符串。
有什么办法可以解决这个问题吗?
编辑:
我有一个 SubString{UTF8String} 类型的变量字 当我使用 do 方法(word) 时,没有出现问题。当我执行 method(word[2:end]) (假设长度至少为 2)时,如果第二个字符很奇怪(不是 UTF8),我会收到错误消息。
最佳答案
Julia 对字节位置而不是字符位置进行索引。对于像 UTF-8 这样的可变长度编码来说,它的效率要高得多,但它使某些操作使用更多的样板文件。
问题在于,某些代码点被编码为多个字节,当您从 2:end 分割字符串时,您将得到第一个字符的一半(女巫无效,您会收到错误)。
解决方案是获取切片中的第二个有效索引而不是 2。我认为这类似于 str[nextind(str, 1):end]
编辑: 我尝试了这个,似乎 SubString{UTF8String} 和 UTF8String 在切片方面有不同的行为。我已将其报告为 bug #7811在 GitHub 上。
关于utf-8 - Julia :我的字符串中有奇怪的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25082347/