summaryrefslogtreecommitdiff
path: root/lib/rexml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rexml')
-rw-r--r--lib/rexml/encoding.rb4
-rw-r--r--lib/rexml/source.rb6
2 files changed, 5 insertions, 5 deletions
diff --git a/lib/rexml/encoding.rb b/lib/rexml/encoding.rb
index 644957439e..8acc8a3698 100644
--- a/lib/rexml/encoding.rb
+++ b/lib/rexml/encoding.rb
@@ -54,8 +54,8 @@ module REXML
def check_encoding str
# We have to recognize UTF-16, LSB UTF-16, and UTF-8
- return UTF_16 if str[0] == 254 && str[1] == 255
- return UNILE if str[0] == 255 && str[1] == 254
+ return UTF_16 if /\A\xfe\xff/n =~ str
+ return UNILE if /\A\xff\xfe/n =~ str
str =~ /^\s*<?xml\s*version=(['"]).*?\2\s*encoding=(["'])(.*?)\2/um
return $1.upcase if $1
return UTF_8
diff --git a/lib/rexml/source.rb b/lib/rexml/source.rb
index cacab221db..c51f504811 100644
--- a/lib/rexml/source.rb
+++ b/lib/rexml/source.rb
@@ -135,14 +135,14 @@ module REXML
# the XML spec. If there is one, we can determine the encoding from
# it.
str = @source.read( 2 )
- if (str[0] == 254 && str[1] == 255) || (str[0] == 255 && str[1] == 254)
- @encoding = check_encoding( str )
+ if /\A(?:\xfe\xff|\xff\xfe)/n =~ str
+ self.encoding = check_encoding( str )
@line_break = encode( '>' )
else
@line_break = '>'
end
super str+@source.readline( @line_break )
- end
+ end
def scan(pattern, cons=false)
rv = super