【发布时间】:2012-04-14 04:28:36
【问题描述】:
我最近试图更新我的观点,并用 unicode 黑星“★”(U+2605,“★”;“ ★"; 0xE2 0x98 0x85 (e29885))。当我在适当的视图中将字符添加到字符串中时,一切似乎都很好。其中一种视图如下所示。
_recent_updates.html.haml
%table.tablesorter#home
%thead
%tr#header
%th#year Year
%th#name Player Name
%th#position Position
%th#school School
%th#stars Stars
%tbody
- @recent_commits.each do |rc|
%tr{:class => cycle("odd", "even")}
%td#class= rc.player.year
%td#name= link_to display_name(rc.player), player_path(rc.player.slug)
%td#position= Position.find(rc.player.position_id).abbr if rc.player.position_id
%td#school= link_to rc.school.name, school_path(rc.school.slug)
%td#stars= "#{display_star(rc.player.vc_star_rating)}★"
我发布了更新并继续我的业务。几天后,我检查了谷歌分析,看看网站的流量是如何流向的,我注意到流量急剧下降到几乎为零。我做了一些检查,因为我知道在此期间网站有大量流量,并意识到我的谷歌分析代码有问题。当我查看生产页面的源代码时,我看到了以下内容。
<--! ...My Page Contents -->
<script type="text/javascript">
if (typeof gaJsHost == 'undefined') {
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
}
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-XXXXXXXX-1");
pageTracker._trackPageview();
} catch(err) {}</scr
似乎 unicode 字符消耗的额外字节没有得到解释,因此它们有效地吃掉了我的页面底部,导致它突然结束。我应该看到的是 script 标签应该已经结束,以及 body 和 html 标签的结束是这样的。
<--! ... My Page Contents -->
<script type="text/javascript">
if (typeof gaJsHost == 'undefined') {
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
}
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-XXXXXXXX-1");
pageTracker._trackPageview();
} catch(err) {}</script>
</body>
</html>
我从 git 恢复到以前的更改(用星号替换星号是有问题的提交中的唯一更改),我的 Google Analytics 跟踪代码再次正常工作,我的脚本、正文和 html 标记都有自己的适当的结束标签。
我的问题有两个。
- 如何在不占用代码末尾的情况下将星号重新添加到视图中?
- 我认为 UTF-8 在 Rails 3.1 中是开箱即用的,那么为什么会这样呢?
【问题讨论】:
标签: unicode utf-8 ruby-on-rails-3.1 google-analytics actionview