【发布时间】:2014-09-22 10:28:29
【问题描述】:
我正在将应用程序从 php 迁移到 rails,并且在显示 em-dash 时遇到了一些问题。 我正在显示一个字段,根据 phpmyadmin 和 rails 控制台,其值为“周一、周二和周四:上午 8 点 - 上午 12 点”。其中 – 应该是一个 em-dash(长破折号)。不知道为什么要以这种方式存储它。..
在 php 中,我用 <td><b>Opening Hours</b><br><?= nl2br($bar['opening_hours']) ?></td> 显示
这会呈现给Mon,Tue & Thu: 8 a.m. – 12 a.m.
在 Rails 中,我用苗条的= simple_format(@venue.opening_hours, style: "margin-bottom: 0px;") 显示这个。然而,这只是呈现给Mon,Tue & Thu: 8 a.m. – 12 a.m.
有谁知道为什么会发生这种情况以及 php 是如何克服它的?我在http://phpepl.cloudcontrolled.com/ 上尝试了echo nl2br("Mon,Tue & Thu: 8 a.m. – 12 a.m.");,它只是按原样打印出来......
编辑:输出到error_log 得到我Mon,Tue & Thu: 8 a.m. \xe2\x80\x93 12 a.m.
【问题讨论】:
-
得到
â等意味着您遇到了字符集问题。例如iso8859 在一个地方,utf-8 在另一个地方。您必须在整个系统中保持相同的字符集,或者将阶段与字符集转换逻辑挂钩。 -
@MarcB 我想到这可能是问题所在,但我不确定要深入挖掘..你有什么建议如何解决这个问题吗?它与stackoverflow.com/questions/6769901/… 有关吗?我可以用stackoverflow.com/questions/6115612/… 修复它吗? php代码似乎如何工作?据我所知,我的 php 代码库似乎在任何时候都没有指定数据库本身的编码。
-
@MarcB 关注stackoverflow.com/questions/4773488/change-default-charset 我发现我的数据库正在使用
latin1。将尝试在 dev 上将其转换为 utf8,看看效果如何。 -
我的
php.ini有;default_charset = "iso-8859-1"。莫非如果不指定,latin1是默认的,所以它与数据库配合得很好? -
如果 db 连接和/或 db 表设置为其他值,则 PHP 的设置无关紧要。
标签: php ruby-on-rails unicode