我从互联网上删了一些文字,我把它放在一个UTF8String中。我可以正常使用这个字符串,但是当我选择一些特定的字符(带有重音的奇怪字符,就像在我的情况下),这不是UTF8标准的一部分时,我得到一个错误,说我使用了无效索引。这只发生在字符串包含奇怪字符时;我的代码使用不包含奇怪字符的普通字符串。
有什么方法可以解决这个问题吗?
编辑:
我有一个SubString类型的变量字{UTF8String} 当我使用do方法(word)时,不会出现问题。当我做方法(单词[2:结束])(假设长度至少为2)时,如果第二个字符很奇怪(不是UTF8),我会收到错误。
答案 0 :(得分:3)
Julia会对字节位置而不是字符位置进行索引。对于像UTF-8这样的可变长度编码来说,它更有效,但它使一些操作使用了更多的样板。
问题是一些代码点被编码为多个字节,当你从2:end切换字符串时,你会得到第一个字符的一半(女巫无效,你得到一个错误)。
解决方案是在切片中获取第二个有效索引而不是2。我认为这就像str[nextind(str, 1):end]
PS。很抱歉我手机上的答案不太明确。
修改强> 我试过这个,看起来像SubString {UTF8String}和UTF8String在切片上有不同的行为。我在GitHub上将其报告为bug #7811。