Строковые поля KirbyBase и utf-8 - PullRequest
0 голосов
/ 13 ноября 2009

Я храню строки utf-8 в таблице KirbyBase, но позже, когда я проверяю кодировку строкового значения, он указывается как IBM437. Я хотел бы сохранить все строки в UTF-8. Возможно ли это?

Теперь, когда у меня есть что-то вроде этого:

table.insert(some_utf8_string)

table.select(:recno) { |r| r.utf8_field == some_utf8_string }

запрос на выборку не находит строки из-за несовпадающей кодировки.

1 Ответ

1 голос
/ 13 ноября 2009
require 'rubygems'
require 'kirbybase'

db = KirbyBase.new

plane_tbl = db.create_table(:plane, :name, :String, :country, :String)
plane_tbl.insert('FW-190', 'Germany')
plane_tbl.insert('FW-190', 'Résume')
plane_tbl.insert('Escaped', "R\303\251sume")

p plane_tbl.select(:recno, :name, :country) { |r| r.country == 'Résume' }
p plane_tbl.select(:recno, :name, :country) { |r| r.country == "R\303\251sume" }
$KCODE = 'u'
p plane_tbl.select(:recno, :name, :country) { |r| r.country == "R\303\251sume" }

Это работает для меня всеми тремя способами с KirbyBase 2.6 и Ruby 1.8.6.

> ruby test_kb.rb
[#<struct #<Class:0xb7afcbf4> recno=2, name="FW-190", country="R\303\251sume">, #<struct #<Class:0xb7afcbf4> recno=3, name="Escaped", country="R\303\251sume">]
[#<struct #<Class:0xb7afada4> recno=2, name="FW-190", country="R\303\251sume">, #<struct #<Class:0xb7afada4> recno=3, name="Escaped", country="R\303\251sume">]
[#<struct #<Class:0xb7af8e50> recno=2, name="FW-190", country="Résume">, #<struct #<Class:0xb7af8e50> recno=3, name="Escaped", country="Résume">]

Можете ли вы привести пример строк, которые не работают, и код, который их обрабатывает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...