Skip to content

Commit ef13fcb

Browse files
authored
Merge pull request #575 from miyucy/patch-1
Fix invalid encoding name
2 parents c5d1d5c + 4070440 commit ef13fcb

File tree

3 files changed

+54
-1
lines changed

3 files changed

+54
-1
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@
77
- `Database#optimize` which wraps the `pragma optimize;` statement. Also added `Constants::Optimize` to allow advanced users to pass a bitmask of options. See https://www.sqlite.org/pragma.html#pragma_optimize. [#572] @alexcwatt @flavorjones
88

99

10+
### Fixed
11+
12+
- Fix `Database#encoding=` support for switching the database encoding to `UTF-16BE`, which has been broken since `Database#encoding=` was introduced in v1.3.12 in 2016. [#575] @miyucy
13+
14+
1015
## 2.2.0 / 2024-10-30
1116

1217
### Added

lib/sqlite3/pragmas.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ def set_int_pragma(name, value)
9393
LOCKING_MODES = [["normal"], ["exclusive"]]
9494

9595
# The list of valid encodings.
96-
ENCODINGS = [["utf-8"], ["utf-16"], ["utf-16le"], ["utf-16be "]]
96+
ENCODINGS = [["utf-8"], ["utf-16"], ["utf-16le"], ["utf-16be"]]
9797

9898
# The list of valid WAL checkpoints.
9999
WAL_CHECKPOINTS = [["passive"], ["full"], ["restart"], ["truncate"]]

test/test_pragmas.rb

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,5 +73,53 @@ def test_optimize_with_args
7373
@db.test_statements
7474
)
7575
end
76+
77+
def test_encoding_uppercase
78+
assert_equal(Encoding::UTF_8, @db.encoding)
79+
80+
@db.encoding = "UTF-16"
81+
assert_equal(Encoding::UTF_16LE, @db.encoding)
82+
83+
@db.encoding = "UTF-16LE"
84+
assert_equal(Encoding::UTF_16LE, @db.encoding)
85+
86+
@db.encoding = "UTF-16BE"
87+
assert_equal(Encoding::UTF_16BE, @db.encoding)
88+
89+
@db.encoding = "UTF-8"
90+
assert_equal(Encoding::UTF_8, @db.encoding)
91+
end
92+
93+
def test_encoding_lowercase
94+
assert_equal(Encoding::UTF_8, @db.encoding)
95+
96+
@db.encoding = "utf-16"
97+
assert_equal(Encoding::UTF_16LE, @db.encoding)
98+
99+
@db.encoding = "utf-16le"
100+
assert_equal(Encoding::UTF_16LE, @db.encoding)
101+
102+
@db.encoding = "utf-16be"
103+
assert_equal(Encoding::UTF_16BE, @db.encoding)
104+
105+
@db.encoding = "utf-8"
106+
assert_equal(Encoding::UTF_8, @db.encoding)
107+
end
108+
109+
def test_encoding_objects
110+
assert_equal(Encoding::UTF_8, @db.encoding)
111+
112+
@db.encoding = Encoding::UTF_16
113+
assert_equal(Encoding::UTF_16LE, @db.encoding)
114+
115+
@db.encoding = Encoding::UTF_16LE
116+
assert_equal(Encoding::UTF_16LE, @db.encoding)
117+
118+
@db.encoding = Encoding::UTF_16BE
119+
assert_equal(Encoding::UTF_16BE, @db.encoding)
120+
121+
@db.encoding = Encoding::UTF_8
122+
assert_equal(Encoding::UTF_8, @db.encoding)
123+
end
76124
end
77125
end

0 commit comments

Comments
 (0)