Таким образом, мой R использует cc1250 charset, sessionInfo()
:
R version 3.4.2 (2017-09-28)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
Matrix products: default
locale:
[1] LC_COLLATE=Czech_Czech Republic.1250 LC_CTYPE=Czech_Czech Republic.1250 LC_MONETARY=Czech_Czech Republic.1250
[4] LC_NUMERIC=C LC_TIME=Czech_Czech Republic.1250
Теперь я хочу работать с базой данных MySQL, используя пакет dbplyr
. Сначала, когда я подключаюсь к БД, я отправляю следующий запрос mysql:
SET NAMES 'cp1250';
Затем, когда я отправляю инструкцию SELECT следующим образом:
SELECT dg_group
FROM transpl
WHERE 'dg_group' = 'Hodgkinův lymfom'
он возвращает мне 0 строк. НО! Когда я устанавливаю кодировку символов 'Hodgkinův lymfom'
в UTF-8, он возвращает мне все соответствующие строки. Я установил кодировку символов в UTF-8 следующим образом:
x <- 'Hodgkinův lymfom'
Encoding(x) <- 'UTF-8'
Тогда инструкция SELECT выглядит так, когда я помещаю переменную x
в предложение WHERE:
SELECT dg_group
FROM transpl
WHERE 'dg_group' = 'Hodgkin<f9>v lymfom'
Хотя кодировка транзакций - cp1250, она работает с UTF-8, но не с cp1250.
Кстати, когда я делаю следующий оператор SELECT с помощью SET NAMES 'cp1250'
, возвращаемые значения в строках отображаются правильно:
SELECT *
FROM transpl
Любая идея о том, что может быть неправильным?
Эти кодировки обрабатывают гексагон F9
как ů
: cp1250, cp1256, dec8, latin1, latin2, latin5. Для utf8/utf8mb4 это шестнадцатеричный C3B9
SET NAMES
объявляет кодировку клиента.
Но как насчет кодировки колонки, в которую вы храните? SHOW CREATE TABLE
чтобы узнать.
При выполнении SELECT col, HEX(col)...
вы получаете F9
или C3B9
?
Дополнительная дискуссия: проблема с символами UTF-8; я не вижу того, что я хранил