繁体   English   中英

Ruby 1.9-无效的多字节字符(utf-8)

[英]Ruby 1.9 - Invalid multibyte character (utf-8)

我有一个只有这两行的红宝石文件:

# encoding: utf-8
puts "—"

当我用ruby test_enc.rb运行它时,它失败并显示:

test_enc.rb:2: invalid multibyte char (UTF-8)
test_enc.rb:2: unterminated string meets end of file

我不知道如何正确指定字符符号( ),但vim告诉我它是151, Hex 97, Octal 227 它也无法与其他字符(如ã以相同的方式失败,因此我怀疑它是否与该字符特别相关。 我在Windows XP上运行,我使用的ruby版本是:

ruby 1.9.1p430 (2010-08-16 revision 28998) [i386-mingw32]

我觉得这里有些明显的东西我很想念。 有任何想法吗?

编辑:今天学习了有关假设的宝贵经验-特别是假设您的编辑器使用的是UTF-8,而没有实际对其进行检查。 糟糕!

感谢您快速准确的答复所有人!

再次编辑: '为utf-8正确设置vim'太大了,与这个问题并没有真正的关系,因此现在是一个单独的问题

鉴于Ruby明确要求您注意UTF-8,因此我强烈怀疑您实际上并没有写出UTF-8文件。 保证Vim(或者你使用任何文本编辑器创建该文件) 确实是设置写出来UTF-8。

请注意,在UTF-8中,任何非ASCII字符都将由多个字节表示,而不是Vim诊断程序中描述的单个字节。 我建议使用二进制文件编辑器(或转储,或其他方式)来真正显示文本文件中的内容。 尚没有某种先入为主的编码概念的东西-甚至没有试图将其视为文本文件的东西。

记事本允许您以UTF-8格式写出文件,因此您可能想尝试一下以查看会发生什么。 (我自己没有安装Ruby,否则我会为您尝试一下。)

您的文件在latin1中。 露比是对的

emdash将被编码为两个字节,而不是UTF-8中的一个字节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM