UTF-8 не распознается в пакетном процессе SQL через Putty
У меня есть файл.sql с несколькими простыми командами SQL "Вставить в", которые вставляются в таблицу с именем Künstler.
insert into Künstler (name) values ('Mariah Carey');
insert into Künstler (name) values ('Michael Jackson');
Однако после выполнения файла через Putty для выполнения всех этих команд каждая строка встречается с ошибкой;
During SQL processing it returned:
SQL0007N The following on "insert into K" mark "▒" is invalid.
Похоже, символы немецкого умлаута превращаются в "▒"
Я включил UTF-8 на Putty, и команды будут работать, если они введены вручную, но не как пакет. Есть ли работа вокруг?
Для дополнительной информации я использую DB2.
2 ответа
Решение оказалось довольно простым. Я писал скрипт в notepad++ и установил неверную кодировку файла. Переключение кодировки с ANSI по умолчанию на UTF-8 решило проблему.
Это можно сделать через Encoding -> Encode в UTF-8 без спецификации.
Запуск скрипта в PuTTY не зависит от настроек PuTTY. Это будет зависеть только от кодировки (набора символов) скрипта и ваших настроек локали (а также от кодировки базы данных - и способа, которым она читает скрипты).
Когда вы печатаете на клавиатуре с помощью PuTTY, это зависит от настроек PuTTY для клавиатуры.
Вместо того, чтобы искать исправление в PuTTY, вы можете установить для кодовой страницы своего приложения (упомянутой в справочнике по DB2) значение UTF-8 (стр. 1208 в соответствии с Пониманием преобразования символов универсальной базы данных DB2). Согласно выводу значений кодовой страницы, это должно происходить автоматически, если ваш языковой стандарт установлен правильно.