How to use utf-8 encoded data in erb template

后端 未结 4 728
盖世英雄少女心
盖世英雄少女心 2021-01-20 23:38

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

相关标签:
4条回答
  • 2021-01-20 23:56

    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
    
    0 讨论(0)
  • 2021-01-21 00:06

    (I decided to write different answer)

    Two issues, I think.

    • datafile encoding on input
    • how you output

    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.

    0 讨论(0)
  • 2021-01-21 00:12

    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 -*- %>)

    0 讨论(0)
  • 2021-01-21 00:12

    Specify <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> in the header of the template

    0 讨论(0)
提交回复
热议问题