Skip to content

Commit d88dea2

Browse files
committed
replace invalid chars on encode
1 parent da05ad2 commit d88dea2

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

lib/mysql2/error.rb

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
module Mysql2
44
class Error < StandardError
55
REPLACEMENT_CHAR = '?'
6+
ENCODE_OPTS = {:undef => :replace, :invalid => :replace}
67

78
attr_accessor :error_number, :sql_state
89
attr_writer :server_version
@@ -19,7 +20,7 @@ def initialize(msg, server_version=nil)
1920

2021
if "".respond_to? :encode
2122
def sql_state=(state)
22-
@sql_state = state.encode
23+
@sql_state = state.encode(ENCODE_OPTS)
2324
end
2425
end
2526

@@ -56,10 +57,10 @@ def clean_message(message)
5657
return message if !message.respond_to?(:encoding)
5758

5859
if @server_version && @server_version > 50500
59-
message.encode
60+
message.encode(ENCODE_OPTS)
6061
else
6162
if message.respond_to? :scrub
62-
message.scrub.encode
63+
message.scrub.encode(ENCODE_OPTS)
6364
else
6465
# This is ugly as hell but Ruby 1.9 doesn't provide a way to clean a string
6566
# and retain it's valid UTF-8 characters, that I know of.
@@ -72,7 +73,7 @@ def clean_message(message)
7273
new_message << REPLACEMENT_CHAR
7374
end
7475
end
75-
new_message.encode
76+
new_message.encode(ENCODE_OPTS)
7677
end
7778
end
7879
end

0 commit comments

Comments
 (0)