I have an data-file stored with utf-8 encode, and I want to embed the data to an erb
template. The data-file is explicitly encoded with utf-8 at the top. But while
If you're using Rails, have you configured default encoding, in application.rb
? like:
config.encoding = "utf-8"
My Rails (3.2.1) project does not contain any configuration other than that.
Other thing you want to check is, whether your datafile really in UTF-8 or not. If you're using Unix-like system, you can use 'nkf' command to check the code, by:
nkf --guess FILE_NAME
(I decided to write different answer)
Two issues, I think.
The erb library knows about the encoding specification in magic comments, but the data file part, you need to take care by yourself. So, when you read the file, you have to specify encoding, or specify default encoding beforehand.
On output, you need to specify the encoding for output. You can specify per I/O channel basis.
To specify default encoding (easiest), you can:
Encoding.default_external = "UTF-8"
to use UTF-8 for all I/O.
In the scenario where you have an ERB template rendering strings from another file that is in UTF-8, adding the following to the top of the ERB template solved it for me:
<%# coding: UTF-8 %>
(instead of <% # -*- coding: UTF-8 -*- %>
)
Specify <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
in the header of the template