簡體   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