summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/helpers/attachments_helper.rb8
-rw-r--r--app/helpers/repositories_helper.rb8
-rw-r--r--app/models/changeset.rb8
3 files changed, 21 insertions, 3 deletions
diff --git a/app/helpers/attachments_helper.rb b/app/helpers/attachments_helper.rb
index 50b44890f..367976515 100644
--- a/app/helpers/attachments_helper.rb
+++ b/app/helpers/attachments_helper.rb
@@ -29,7 +29,13 @@ module AttachmentsHelper
end
def to_utf8(str)
- return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii
+ if str.respond_to?(:force_encoding)
+ str.force_encoding('UTF-8')
+ return str if str.valid_encoding?
+ else
+ return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii
+ end
+
begin
Iconv.conv('UTF-8//IGNORE', 'UTF-8', str + ' ')[0..-3]
rescue Iconv::InvalidEncoding
diff --git a/app/helpers/repositories_helper.rb b/app/helpers/repositories_helper.rb
index 959628735..19a86e00c 100644
--- a/app/helpers/repositories_helper.rb
+++ b/app/helpers/repositories_helper.rb
@@ -113,7 +113,13 @@ module RepositoriesHelper
end
def to_utf8(str)
- return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii
+ if str.respond_to?(:force_encoding)
+ str.force_encoding('UTF-8')
+ return str if str.valid_encoding?
+ else
+ return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii
+ end
+
@encodings ||= Setting.repositories_encodings.split(',').collect(&:strip)
@encodings.each do |encoding|
begin
diff --git a/app/models/changeset.rb b/app/models/changeset.rb
index 804719481..ca4daace8 100644
--- a/app/models/changeset.rb
+++ b/app/models/changeset.rb
@@ -227,7 +227,13 @@ class Changeset < ActiveRecord::Base
end
def self.to_utf8(str)
- return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii
+ if str.respond_to?(:force_encoding)
+ str.force_encoding('UTF-8')
+ return str if str.valid_encoding?
+ else
+ return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii
+ end
+
encoding = Setting.commit_logs_encoding.to_s.strip
unless encoding.blank? || encoding == 'UTF-8'
begin