work around bust encodings passed in to method

This commit is contained in:
Sam 2013-11-05 13:40:39 +11:00
parent 3bdd2eeeba
commit 415d4df648
2 changed files with 17 additions and 1 deletions

View file

@ -26,6 +26,13 @@ module ApplicationHelper
def escape_unicode(javascript)
if javascript
javascript = javascript.dup.force_encoding("utf-8")
unless javascript.valid_encoding?
# work around bust string with a double conversion
javascript.encode!("utf-16","utf-8",:invalid => :replace)
javascript.encode!("utf-8","utf-16")
end
javascript.gsub!(/\342\200\250/u, '
')
javascript.gsub!(/(<\/)/u, '\u003C/')
javascript.html_safe

View file

@ -2,7 +2,16 @@ require 'spec_helper'
describe ApplicationHelper do
describe 'mobile_view?' do
describe "escape_unicode" do
it "encodes tags" do
helper.escape_unicode("<tag>").should == "\u003ctag>"
end
it "survives junk text" do
helper.escape_unicode("hello \xc3\x28 world").should =~ /hello.*world/
end
end
describe "mobile_view?" do
context "enable_mobile_theme is true" do
before do
SiteSetting.stubs(:enable_mobile_theme).returns(true)