2015-11-11 78 views
0

我試圖在NGINX和PUMA的Ubuntu 14.02服務器上部署應用程序,當我嘗試訪問在服務器上的靜態頁面與巴西葡萄牙語字符和無法訪問數據庫,頁面不顯示,並且會記錄以下錯誤:ActionView :: Template :: Error(不兼容的字符編碼:ASCII-8BIT和UTF-8)與葡萄牙語巴西字符

ActionView :: Template :: Error(不兼容的字符編碼:ASCII-8BIT和UTF-8)

我讀了很多關於這個錯誤的帖子/答案,並且嘗試了一切。

紅寶石版本:紅寶石2.1.3p242(2014年9月19日修訂版47630)[x86_64的Linux的] 的Rails版本:Rails的4.2.4

在服務器命令locale返回以下:

LANG=en_US.UTF-8 
LANGUAGE=en_US.UTF-8 
LC_CTYPE="en_US.UTF-8" 
LC_NUMERIC="en_US.UTF-8" 
LC_TIME="en_US.UTF-8" 
LC_COLLATE="en_US.UTF-8" 
LC_MONETARY="en_US.UTF-8" 
LC_MESSAGES="en_US.UTF-8" 
LC_PAPER="en_US.UTF-8" 
LC_NAME="en_US.UTF-8" 
LC_ADDRESS="en_US.UTF-8" 
LC_TELEPHONE="en_US.UTF-8" 
LC_MEASUREMENT="en_US.UTF-8" 
LC_IDENTIFICATION="en_US.UTF-8" 
LC_ALL=en_US.UTF-8 

我的application.rb中包含此行:

config.encoding = "utf-8" 

我的environment.rb contais行:

Encoding.default_external = Encoding::UTF_8 
Encoding.default_internal = Encoding::UTF_8 

我已經把#encoding:「utf-8」放在我的html.erb文件上面,但沒有成功。

回答

1

檢查有問題的源文件是否實際使用UTF-8編碼(例如,Textmate允許使用各種編碼保存文件)。檢查文件是否被系統實際識別爲UTF,運行file /path/to/something應該返回UTF-8。你

此外,如果你只有幾那些不良編碼字符串可以嘗試這樣的事:

the_bad_string.dup.force_encoding("UTF-8") 

這應該轉換不管它是UTF。

+0

嗨德米特里,感謝您抽出時間來幫助我! 命令文件給我這個: divulgue.html.erb:UTF-8 Unicode文本 force_encoding也沒有幫助我。而當我返回代碼the_bad_string.encoding.name它也給我UTF-8! –

+0

如果你的字符串來自'divulgue.html.erb'之外的某個地方,那麼也檢查源文件的編碼。例如。當我試圖在視圖中使用'env.rb'中定義的字符串時,我遇到了這樣的問題。還要檢查'the_bad_string.encoding'返回的是什麼,它是UTF ?. –

+0

不,這是一個包含靜態內容的靜態頁面,但帶有áãç等字符。如果我刪除這些字符,則頁面呈現正常。 我使用在local_env.rb文件中定義的字符串來定義頁面標題,並且令人驚訝的是它們工作,即使是ú字符也是如此?? ?? 是的,string.encoding.name返回UTF-8。 –

相關問題