2011-09-06 48 views
1

Rails 3 announcement上市的主要新功能:Rails 2/Ruby 1.8.7的字符編碼問題(「 」)有沒有解決方案?

告別如果你瀏覽Internet與任何頻率編碼問題

,你可能會遇到的字符。這個問題非常普遍,是由混合和匹配不同編碼的內容引起的。

在像Rails這樣的系統中,內容來自數據庫,模板,源文件和用戶。 Ruby 1.9爲我們提供了消除這些問題的原始工具,並且與Rails 3相結合,在Rails應用程序中應該成爲過去。永遠不要與從Microsoft Word用戶粘貼損壞的數據再次鬥爭!

我有一個應用程序,用戶經常從MS Word中粘貼文本,我們遇到這個問題。

但是我們正在運行Rails 2和Ruby 1.8.7。目前沒有改變這一點的前景。

我認爲編碼問題通常與印刷工的報價(「捲曲報價」)一起出現。也許還有像破折號和elipses字符的東西。

我想知道是否有例行公事,我可以運行傳入的數據來克服這個問題。

這是確定的,如果報價都被轉換爲直引號,省略號都被轉換爲三個時期,等

它甚至可能是在系統級運行一個程序,我可以從我的應用程序

調用
processed_data = `system_command #{params[:incoming_data]}` 
+0

如果您碰巧在Windows後端,您可能會對此有所好運,並且其中一個代碼示例(http://msdn.microsoft.com/zh-cn/library/cc488002.aspx) 。否則,你知道問題來自哪裏嗎?文本被粘貼到純文本區域/文本字段中,還是來自所見即所得元素或其他內容? – jefflunt

回答

2

可以使用rchardet寶石檢測輸入字符串的編碼,以及內置的語言Iconv庫到需要轉換的字符串轉換:

require ‘rchardet’ 

[...] 

cd = CharDet.detect(params[:my_upload_form][:uploaded_file]) 
encoding = cd['encoding'] 

converted_string = Iconv.conv(‘UTF-8′, encoding, params[:my_upload_form][:uploaded_file]) 

釷例如正在處理一個上傳的文件,但是當然你可以將它應用到從textareas進入的數據,或者你認爲用戶可能以其他編碼粘貼數據的地方。

無恥地從這位仁慈的紳士那裏借了http://www.meeho.net/blog/2010/03/ruby-how-to-detect-the-encoding-of-a-string/

+0

謝謝。好建議。我不知道那寶石。不過,我不確定這是否會解決這個問題。這似乎有點不可預知,但也許我會試一試。 – Ethan

相關問題