Warning Console code page (437) differs from Windows code page (1252). 8-bit characters might not work correctly in PostgreSQL
Whenever I access psql, I get the following message:
I tried command
before running runpsql.bat file in command line. And there, it runs fine without the error. But accessing psql again after closing command prompt, throws the same warning. How do I solve this warning within SQL Shell?
I am using windows 10 OS.
Edit:
This is what I did:
But after exiting from cmd, and firing up shell like this:
It still throws the same warning.
3 Answers 3
When you use cmd.exe /c chcp 1252 in the batch file, you start a new command line, change the codepage for that and then that command line is immediately terminated, but the one that runs psql has not bee changed.
(without calling cmd.exe ) into the batch file.
This works in Powershell as well.
As mentioned in the accepted answer, running chcp in a new command line interpreter context does not work. Here’s how I wrapped my Windows PostgreSQL client start in a batch file.
Create this batch script as e.g. %APPDATA%\psql.bat . Make sure you have the correct path to psql.exe , I’m using version 11 in Windows 10 (x64).
Passwords can be stored in %APPDATA%\postgresql\pgpass.conf as described in PostgreSQL documentation.
Script can be executed by issuing %appdata%\psql on the command line or as I like to use it, in Windows Terminal profile:
Кодовая страница 437 — Code page 437
MIME / IANA | IBM437 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Псевдоним (а) | cp437, 437, csPC8CodePage437, OEM-США | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Язык (и) | английский | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Классификация | Расширенный ASCII , кодовая страница OEM | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Расширяется | US-ASCII | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Другая связанная кодировка (и) | Кодовая страница 850 , CWI-2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Кодовая страница 437 ( CCSID 437) — это набор символов исходного IBM PC (персонального компьютера). Он также известен как CP437, OEM-US, OEM 437, PC-8 или DOS Latin US. В набор входят все печатаемые символы ASCII , расширенные коды для акцентированных букв ( диакритические знаки ), некоторые греческие буквы, значки и символы рисования линий. Иногда его называют «OEM-шрифт», «высокий ASCII» или « расширенный ASCII » (одно из многих взаимно несовместимых расширений ASCII). Этот набор символов остается основным набором в ядре любой видеокарты, совместимой с EGA и VGA . Текст, отображаемый при перезагрузке ПК, прежде чем любой другой шрифт может быть загружен с носителя, обычно отображается в этом наборе символов. Многие форматы файлов, разработанные во времена IBM PC, также основаны на кодовой странице 437. СодержаниеВидеоадаптерыОригинальный IBM PC содержал этот шрифт в качестве шрифта 9 × 14 пикселей-за-символа , хранящегося в ПЗУ в IBM монохромного видеоадаптер (MDA) и 8 × 8 пиксели-за-символ шрифта Graphics Adapter Color ( CGA ) открытки. IBM Enhanced Graphics Adapter (ЭГ) содержал 8 × 14 пикселей-за-версию символа, и VGA содержал версию 9 × 16. Все эти видеоадаптеры имеют текстовые режимы, в которых каждая символьная ячейка содержит 8-битный код символа (см. Подробности ), что дает 256 возможных значений для графических символов. Всем 256 кодам был присвоен графический символ в ПЗУ, включая коды от 0 до 31, которые были зарезервированы в ASCII для неграфических управляющих символов. В различных восточноевропейских ПК использовались разные наборы символов, иногда выбираемые пользователем с помощью перемычек или настройки CMOS. Эти наборы были разработаны так, чтобы максимально соответствовать 437, например, разделять кодовые точки для многих символов рисования линий, при этом позволяя отображать текст на местном языке. Альтернативные кодыНаследие кодовой страницы 437 — это числовые комбинации, используемые в кодах клавиш Windows Alt . Пользователь мог ввести символ, удерживая клавишу Alt и вводя трехзначный десятичный код клавиши Alt на цифровой клавиатуре, и многие пользователи запоминали числа, необходимые для CP437 (или для аналогичной кодовой страницы 850 ). Когда Microsoft перешла на свои проприетарные наборы символов (например, CP1252 ) и более поздний Unicode в Windows, исходные коды были сохранены; Microsoft добавила возможность вводить код в новом наборе символов, вводя цифровую клавиатуру 0 перед цифрами. Набор символовВ следующих таблицах показана кодовая страница 437. Каждый символ показан с его эквивалентной кодовой точкой Unicode и его десятичным кодом Alt . См. Также примечания ниже, поскольку для некоторых кодовых точек существует несколько эквивалентных символов Unicode. Хотя ПЗУ предоставляет графику для всех 256 различных возможных 8-битных кодов, некоторые API-интерфейсы не будут печатать некоторые кодовые точки, в частности диапазон 0–31 и код 127. Вместо этого они будут интерпретировать их как управляющие символы. Например, многие методы вывода текста на исходном IBM PC интерпретируют коды для BEL, BS, CR и LF. Многие принтеры также не могли печатать эти символы.
Письмо Число Пунктуация Символ Другой Неопределенный При переводе в Unicode некоторые коды не имеют уникального единственного эквивалента Unicode; правильный выбор может зависеть от контекста. ИсторияРепертуар кодовой страницы 437 был взят из набора символов текстовых процессоров Wang , согласно Биллу Гейтсу в интервью Гейтсу и Полу Аллену , появившемуся в выпуске журнала Fortune от 2 октября 1995 года : «. Мы также были очарованы специализированными текстовыми процессорами от Wang, потому что мы верили, что машины общего назначения могут делать это так же хорошо. Вот почему, когда пришло время разработать клавиатуру для IBM PC, мы добавили забавную Набор символов Wang в машину — вы знаете, смайлики, прямоугольники, треугольники и прочее. Мы думали, что когда-нибудь захотим сделать клон программы для обработки текстов Wang ». Согласно интервью с Дэвидом Дж. Брэдли (разработчиком ROM-BIOS для ПК ), персонажи были определены во время четырехчасовой встречи во время перелета из Сиэтла в Атланту Энди Саенцем (ответственным за видеокарту), Лью Эггебрехтом. (главный инженер по ПК) и сам. Подбор графических символов имеет некоторую внутреннюю логику:
Большинство шрифтов для Microsoft Windows включают специальные графические символы в показанных индексах Unicode, поскольку они являются частью набора WGL4, который Microsoft рекомендует разработчикам шрифтов поддерживать. (Семейство моноширинных растровых шрифтов Terminal было ранним шрифтом, который воспроизводил всю кодовую страницу 437 символов, по крайней мере, в некоторых разрешениях.) Чтобы нарисовать эти символы непосредственно из этих кодовых точек, шрифт Microsoft Windows под названием MS Linedraw копирует всю кодовую страницу 437 символов, тем самым обеспечивая один способ отображения текста DOS на современной машине Windows, как это было показано в DOS, с ограничениями. ИнтернационализацияКодовая страница 437 имеет ряд международных символов, в основном значения 128 на 175 (80 гекс А. Ф. гекса ). Однако он полностью охватывает только несколько основных западноевропейских языков, включая английский , немецкий и шведский , и поэтому в нем отсутствуют некоторые символы (в основном заглавные буквы), важные для многих основных западноевропейских языков:
Наряду с символами валюты цент (¢), фунт стерлингов (£) и иена / юань (¥), он имеет пару бывших символов европейской валюты: флорин (ƒ, Нидерланды) и песета (₧, Испания). Наличие последней необычно, поскольку испанская песета никогда не была международной валютой, а также никогда не имела собственного символа; его просто сокращали как «Pt», «Pta», «Pts» или «Ptas». Однако испанские модели электрической пишущей машинки IBM также имели одну позицию, посвященную ей. Более поздние наборы символов DOS, такие как кодовая страница 850 (DOS Latin-1), кодовая страница 852 (DOS Central-European) и кодовая страница 737 (DOS Greek), заполнили пробелы для международного использования с некоторой совместимостью с кодовой страницей 437, сохранив одиночные и двойные символы рисования прямоугольником, отбрасывая смешанные ( например, горизонтальный двойной / вертикальный одиночный). Все символы кодовой страницы 437 имеют одинаковые глифы в Unicode и в наборе символов Microsoft WGL4 , и поэтому доступны в большинстве шрифтов в Microsoft Windows , а также в шрифте VGA по умолчанию ядра Linux и шрифтах ISO 10646 для X11 . |