Как проверить кодировку в текстовом файле? / Общая / SocialKit
Программный комплекс SocialKit корректно работает с кириллицей в текстовых файлах, кодировка которых соответствует стандарту Windows-1251 (кратко может быть записано как CP1251 или ANSI). В этой связи в задачах, поддерживающих указание внешнего файла с перечнем комментариев, сообщений, описаний и прочей информации, которая может содержать кириллицу, нужно указывать текстовые файлы, где русский текст задан в кодировке по стандарту Windows-1251 или же просто ANSI, или CP1251 — всё это, по сути, одно и то же.
Учитывая, что многие инструменты по работе с текстом не отображают, в какой именно кодировке задан текст в текстовом файле и/или не поддерживают преобразование кодировок, то у новичков часто возникает вопрос о том, как именно привести кодировку текстового файла с русским текстом к понятному для SocialKit формату CP1251.
Следует сразу отметить, что большинство текстовых редакторов для ОС Windows (например, встроенный Блокнот и Wordpad) по умолчанию создают текстовые файлы именно с кодировкой по стандарту Windows-1251. Однако, эта кодировка по умолчанию может быть изменена в следствие тех или иных действий.
Если вы не уверены в том, в какой именно кодировке задан текст, то проще всего этот текст пересохранить через стандартный Блокнот Windows. При пересохранении Блокнот также покажет, в каком формате текст сейчас.
Опишем эту простую процедуру по шагам.
1. Открыть искомый текстовый файл в Блокноте Windows и выбрать пункт меню «Файл» -> «Сохранить как…».
Пример текстового файла, в котором русский текст задан в формате UTF, но это не очевидно при открытии.
2. В открывшемся диалоговом окне вы сразу видите, в какой кодировке был сохранён текст в текстовом файле.
Диалоговое окно пересохранения текстового файла, в котором можно сразу изменить кодировку.
Как видно, в примере текст в текстовом файле был ранее сохранён в кодировке UTF-8. Для изменения кодировке достаточно выбрать в выпадающем списке кодировку ANSI и нажать кнопку « Сохранить«.
При этом зрительно для вас ничего не изменится, но многое изменится для программы и алгоритмов, занимающихся обработкой текста в процессе отправки. Корректно Instagram’у будет отправлен только ANSI-текст.
ANSI и Unicode — Основы программирования
Windows поддерживает две кодировки: ANSI и Unicode. В кодировке ANSI (American National Standard Institute) каждый символ кодируется однобайтным кодом. Коды от 0 до 127 совпадают с кодами ASCII, коды от 128 до 255 могут означать разные символы различных языков в зависимости от выбранной кодовой страницы. Кодовые страницы позволяют уместить многочисленные символы различных языков в однобайтный код, но при этом можно работать только с одной кодовой страницей, т.е. с одним языком. Неверно выбранная кодовая страница приводит к появлению непонятных символов (в Интернете их обычно называют «кракозябрами») вместо осмысленного текста.
В кодировке Unicode используется 2 байта на символ, что даёт возможность закодировать 65 536 символов. Этого хватает для символов латиницы и кириллицы, греческого алфавита, китайских иероглифов, арабских и еврейских букв, а также многочисленных дополнительных (финансовых, математических и т. п.) символов. Кодовых страниц в Unicode нет.
Примечание
Кодовая страница русского языка в ANSI имеет номер 1251. Кодировка символов в ней отличается от принятой в DOS так называемой альтернативной кодировки. В целях совместимости для DOS-программ, а также для консольных приложений Windows использует альтернативную кодировку. Именно поэтому при выводе русского текста в консольных приложениях получаются те самые «кракозябры». Чтобы избежать этого, следует перекодировать символы из кодировки ANSI в DOS при выводе, и наоборот — при вводе. Это можно сделать с помощью функций CharToOem и OemToChar.
Windows NT/2000/XP поддерживает ANSI и Unicode в полном объеме. Это значит, что любая функция, работающая со строками, представлена в двух вариантах: для ANSI и для Unicode. Windows 9x/МЕ в полном объеме поддерживает только ANSI. Unicode-варианты в этих системах есть у относительно небольшого числа функций. Каждая страница MSDN, посвященная функции, работающей со строками (или со структурами, содержащими строки), в нижней части содержит надпись, показывающую, реализован ли Unicode-вариант этой функции только для NT/2000/XP или для всех платформ.
В качестве примера рассмотрим функции вывода текста на экран. Unicode-версию на всех платформах имеют только две из них TextOut и ExtTextOut. Функции DrawText и DrawTextEx имеют Unicode-варианты только в Windows NT/2000/XP. Если же смотреть функции для работы с окнами, то среди них нет ни одной, которая имела бы Unicode-вариант в Windows 9х/МЕ. Следует отметить, что с относительно недавнего времени Microsoft предоставляет расширение для Windows 9x/МЕ которое позволяет добавить полную поддержку Unicode в эти системы. Это расширение называется MSLU (Microsoft Layer for Unicode), его можно скачать с официального сайта Microsoft.
Сначала разберемся с тем, как используются два варианта одной функции в Microsoft Visual C++. В стандартных заголовочных файлах учитывается наличие макроопределения UNICODE. Есть два символьных типа — CHAR для ANSI и WCHAR для Unicode. Если макрос UNICODE определен, тип TCHAR соответствует типу WCHAR, если не определен — типу CHAR (после этого производные от TCHAR типы, такие как LPCTSTR автоматически начинают соответствовать кодировке, определяемой наличием или отсутствием определения UNICODE). В заголовочных файлах импортируются оба варианта функции, а также определяется макрос RegisterWindowMessage. Его смысл также зависит от макроса UNICODE: если он определен, RegisterWindowMessage эквивалентен RegisterWindowMessageW, если не определен — RegisterWindowMessageA. Все функции, поддерживающие два варианта кодировки, импортируются точно так же. Таким образом, вставляя или убирая макроопределение UNICODE, можно, не меняя ни единого символа в программе, компилировать ее ANSI- или Unicode-версию.
Разработчики Delphi не стали полностью копировать этот механизм, видимо, этому помешала существующая в Delphi раздельная компиляция модулей, из-за которой невозможно определением одного символа заставить все модули перекомпилироваться (тем более что часть из них может не иметь исходных кодов). Поэтому в Delphi нет типа, аналогичного TCHAR.
Листинг 1.19. Импорт функции RegisterWindowMessage
interface
…
function RegisterWindowMessage (lpString: PChar): UINT; stdcall;
function RegisterWindowMessageA (lpString: PAnsiChar): UINT;
stdcall; function RegisterWindowMessageW (lpString: PWideChar): UINT; stdcall;
…
implementation
…
function RegisterWindowMessage;
external user32 name ‘RegisterWindowMessageA’;
function RegisterWindowMessageA;
external user32 name ‘RegisterWindowMessageA’;
function RegisterWindowMessageW;
external user32 name ‘RegisterWindowMessageW’;
Видно, что функция RegisterWindowMessageA импортируется дважды: один раз под своим настоящим именем, а второй раз — под именем RegisterWindowMessage. Любое из этих имен подходит для вызова ANSI-варианта этой функции (напоминаю, что типы PChar и PAnsiChar эквивалентны). Чтобы вызвать Unicode-вариант функции, потребуется функция RegisterWindowMessageW.
Структуры, содержащие строковые данные, также имеют ANSI- и Unicode-вариант. Например, структура WNDCLASS в модуле Windows представлена типами TWndClassA (с синонимами WNDCLASSA и tagWNDCLASSA) и TWndClassW (с синонимами WNDCLASSW и tagWHDCLASSW). Тип TWndClass (и его синонимы WNDCLASS и tagWNDCLASS) эквивалентен типу TWndClassA. Соответственно, при вызове функций RegisterClassA и RegisterClassExA используется тип TWndClassA, при вызове RegisterClassW и RegisterClassExW — тип TWndClassW.
Что такое кодировка ANSI и с чем ее едят? — RUUD
Прежде чем отвечать на вопрос о том, что же такое кодировка ANSI Windows, ответим сначала на другой вопрос: «Что же такое кодировка вообще?»
У каждого компьютера, в каждой системе используется определенный набор символов, зависящий от языка, используемого пользователем, от его профессиональных компетенций и личных предпочтений.
Общее определение кодировки
Так, в русском языке используется 33 символа для обозначения букв, в английском – 26. Также используется 10 цифр для счета (0; 1; 2; 3; 4; 5; 6; 7; 8; 9) и некоторые специальные символы, в том числе запятая, минус, пробел, точка, процент и так далее.
You will be interested:How dangerous is the new coronavirus?
Каждому из этих символов при помощи кодовой таблицы присваивается порядковый номер. К примеру, букве «A» может быть присвоен номер 1; «Z» — 26 и так далее.
Собственно, номер, представляющий символ как целое число, считается кодом символа, а кодировка — это, соответственно, набор символов в такой таблице.
Богатство разнообразия кодовых таблиц
На данный момент существует довольно большое количество кодировок и кодовых таблиц, используемых разными специалистами: это и ASCII, разработанная в 1963 году в Америке, и Windows-1251, совсем недавно еще бывшая популярной благодаря Microsoft, KOI8-R и Guobiao — и многие, многие другие, причем процесс их появления и отмирания происходит и по сей день.
Среди этого огромного списка совершенно особо держится так называемая кодировка ANSI.
Дело в том, что в свое время компания Microsoft создала целый набор кодовых страниц:
Windows — 874 Тайский Windows-1250 Центральноевропейский Windows-1251 Кириллический (все символы русского языка + символы близких языков) Windows-1252 Западноевропейский Windows-1253 Греческий Windows-1254 Турецкий Windows-1255 Еврейский Windows-1256 Арабский Windows-1257 Балтийский Windows-1258 Вьетнамский
Все они получили общее название таблицы кодировки ANSI, или кодовой страницы ANSI.
Интересный факт: одной из первых кодовых таблиц стала ASCII, в 1963 году созданная American National Standards Institute (Американским национальным институтом стандартов), сокращенно называвшимся именно ANSI.
Помимо всего прочего, эта кодировка содержит и непечатные символы, так называемые «Управляющие последовательности», или ESC, уникальные для всех таблиц символов, зачастую несовместимые между собой. При умелом использовании, однако, они позволяли скрывать и восстанавливать курсор, переводить его с одного положения в тексте на другое, устанавливать табуляцию, стирать часть окна терминала, в котором велась работа, изменять форматирование текста на экране и менять цвет (или даже рисовать и подавать звуковые сигналы!). В 1976 году, кстати, это было довольно неплохим подспорьем для программистов. Кстати, терминал — это устройство, требующееся для ввода и вывода информации. В те далекие времена он представлял собой монитор и клавиатуру, подсоединенные к ЭВМ (электронной вычислительной машине).
Некорректное отображение символов
К сожалению, в дальнейшем подобная система вызвала многочисленные сбои в системах, выводя вместо желаемых стихов, лент новостей или описаний любимых компьютерных игр так называемые кракозябры — бессмысленные, нечитаемые наборы символов. Появление этих вездесущих ошибок было вызвано всего лишь попыткой отображать символы, закодированные в одной кодовой таблице, при помощи другой.
Чаще всего с последствиями неверного чтения этой кодировки мы сталкиваемся в Интернете до сих пор, когда наш браузер по какой-то причине не может достаточно точно определить, какая именно из Windows-**** кодировок используется в данный момент, из-за указания веб-мастером общей кодировки ANSI либо изначально неверной кодировки, к примеру, 1252 вместо 1521. Ниже представлена точная таблица кодировок.
Кириллическая таблица ANSI-кодировок, Windows-1251
№ П/п.
HEX
СИМВОЛ
№ П/п.
HEX
СИМВОЛ
№ П/п.
179
B3
і
009
09
TAB
095
5F
_
180
B4
ґ
010
0A
LF
096
60
`
181
B5
µ
011
0B
VT
097
61
a
182
B6
¶
012
0C
FF
098
62
b
183
B7
·
013
0D
CR
099
63
c
184
B8
Е
014
0E
SO
100
64
d
185
B9
№
015
0F
SI
101
65
e
186
BA
Є
016
10
DLE
102
66
f
187
BB
»
017
11
DC1
103
67
g
188
BC
ј
018
12
DC2
104
68
h
189
BD
Ѕ
019
13
DC3
105
69
i
190
BE
Ѕ
020
14
DC4
106
6A
j
191
BF
Ї
021
15
NAK
107
6B
k
192
C0
А
022
16
SYN
108
6C
l
193
C1
Б
023
17
ETB
109
6D
m
194
C2
В
024
18
CAN
110
6E
n
195
C3
Г
025
19
EM
111
6F
o
196
C4
Д
026
1A
SUB
112
70
p
197
C5
Е
027
1B
ESC
113
71
q
198
C6
Ж
028
1C
FS
114
72
r
199
C7
З
029
1D
GS
115
73
s
200
C8
И
030
1E
RS
116
74
t
201
C9
Й
031
1F
US
117
75
u
202
CA
К
032
20
Пробел
118
76
v
203
CB
Л
033
21
!
119
77
w
204
CC
М
034
22
«
120
78
x
205
CD
Н
035
23
#
121
79
y
206
CE
О
036
24
$
122
7A
z
207
CF
П
037
25
%
123
7B
{
208
D0
Р
038
26
&
124
7C
|
209
D1
С
039
27
‘
125
7D
}
210
D2
Т
040
28
(
126
7E
~
211
D3
У
041
29
)
127
7F
212
D4
Ф
042
2A
*
128
80
Ђ
213
D5
Х
043
2B
+
129
81
Ѓ
214
D6
Ц
044
2C
,
130
82
‚
215
D7
Ч
045
2D
—
131
83
ѓ
216
D8
Ш
046
2E
.
132
84
„
217
D9
Щ
047
2F
/
133
85
…
218
DA
Ъ
048
30
0
134
86
†
219
DB
Ы
049
31
1
135
87
‡
220
DC
Ь
050
32
2
136
88
€
221
DD
Э
051
33
3
137
89
‰
222
DE
Ю
052
34
4
138
8A
Љ
223
DF
Я
053
35
5
139
8B
‹
224
E0
а
054
36
6
140
8C
Њ
225
E1
б
055
37
7
141
8D
Ќ
226
E2
в
056
38
8
142
8E
Ћ
227
E3
г
057
39
9
143
8F
Џ
228
E4
д
058
3A
:
144
90
Ђ
229
E5
е
059
3B
;
145
91
‘
230
E6
ж
060
3C
146
92
’
231
E7
з
061
3D
=
147
93
“
232
E8
и
062
3E
>
148
94
”
233
E9
й
063
3F
?
149
95
•
234
EA
к
064
40
@
150
96
–
235
EB
л
065
41
A
151
97
—
236
EC
м
066
42
B
152
98
237
ED
н
067
43
C
153
99
™
238
EE
о
068
44
D
154
9A
љ
239
EF
п
069
45
E
155
9B
›
240
F0
р
070
46
F
156
9C
њ
241
F1
с
071
47
G
157
9D
ќ
242
F2
т
072
48
H
158
9E
ћ
243
F3
у
073
49
I
159
9F
џ
244
F4
ф
074
4A
J
160
A0
245
F5
х
075
4B
K
161
A1
Ў
246
F6
ц
076
4C
L
162
A2
ў
247
F7
ч
077
4D
M
163
A3
Ј
248
F8
ш
078
4E
N
164
A4
¤
249
F9
щ
079
4F
O
165
A5
Ґ
250
FA
ъ
080
50
P
166
A6
¦
251
FB
ы
081
51
Q
167
A7
§
252
FC
ь
082
52
R
168
A8
Е
253
FD
э
083
53
S
169
A9
©
254
FE
ю
084
54
T
170
AA
Є
255
FF
я
085
55
U
Более того, в 1986 году ANSI была существенно расширена, благодаря Яну Э. Дэвису, написавшему пакет The Draw, позволяющий не просто использовать базовые, с нашей точки зрения, функции, но и полноценно (или почти полноценно) рисовать!
Подводя итоги
Таким образом, можно видеть, что кодировка ANSI, по сути, хоть и была довольно спорным решением, сохраняет свои позиции.
Со временем с легкой руки энтузиастов древний терминал ANSI перекочевал даже на телефоны!
Источник
Кодировка XML
Здравствуйте, уважаемые посетители сайта okITgo.ru! Продолжаем рассматривать язык разметки XML.
XML документы могут содержать символы, не входящие в ASCII, например норвежские, или французские.
Чтобы избежать ошибок, указывайте кодировку XML, или сохраняйте XML файлы в формате Уникод.
Ошибки Кодировки XML
При загрузке XML документа, Вы можете получить две различные ошибки, указывающие на проблемы с кодировкой:
Неправильный символ был найден в текстовом содержимом.
Вы получаете эту ошибку, если ваш XML содержит символы, не входящие в ASCII, и файл был сохранен как однобайтовый ANSI (или ASCII) без указания кодировки.
Однобайтовый XML файл с атрибутом кодировки.
Тот же однобайтовый XML файл без атрибута кодировки.
Переключение из текущей кодировки в указанную кодировку не поддерживается.
Вы получаете эту ошибку, если ваш XML файл был сохранен как двухбайтовый Уникод (или UTF-16) с указанной однобайтовой кодировкой (например, Windows-1251,
ISO-8859-1, UTF-8).
Вы также получаете эту ошибку, если ваш XML файл был сохранен как однобайтовый ANSI (или ASCII) с указанной двухбайтовой кодировкой (например, UTF-16).
Двухбайтовый XML файл без кодировки.
Тот же двухбайтовый XML файл с однобайтовой кодировкой.
Блокнот Windows
Блокнот Windows сохраняет файлы как однобайтовые ANSI (ASCII) по умолчанию.
Если Вы выберите «Сохранить как…», Вы можете указать двухбайтовый Уникод (UTF-16).
Сохраните XML файл ниже как Уникод (заметьте, что документ не содержит атрибута кодировки):
<?xml version=»1.0″?> <note> <from>Света</from> <to>Вася</to> <message>Позвони мне завтра!</message> </note> |
Файл выше, note_encode_none_u.xml НЕ будет генерировать ошибку. Но если Вы укажете однобайтовую кодировку, то будет.
Кодировка (откройте файл), вызовет сообщение об ошибке:
<?xml version=»1.0″ encoding=»windows-1251″?> |
Следующая кодировка (откройте файл), вызовет сообщение об ошибке:
<?xml version=»1.0″ encoding=»ISO-8859-5″?> |
Следующая кодировка (откройте файл), вызовет сообщение об ошибке:
<?xml version=»1.0″ encoding=»UTF-8″?> |
Следующая кодировка (откройте файл), НЕ будет генерировать ошибку:
<?xml version=»1.0″ encoding=»UTF-16″?> |
Выводы
- Всегда используйте атрибут кодировки XML
- Используйте редактор, который поддерживает кодировки
- Удостоверьтесь, что знаете, какую кодировку использует ваш редактор
- Используйте ту же самую кодировку в атрибуте кодировки
Спасибо за внимание! До новых встреч на страницах сайта okITgo.ru.
Как сменить кодировку текстового файла с помощью Блокнота в Windows
Фишка кодировки текстовых фалов в том, что хранятся не сами буквы (символы), а ссылки на них в таблице кодировок. Если с латинским буквами, арабскими цифрами и основными символами типа точек, тире и запятых никаких проблем не возникает: во многих таблицах кодировок все эти буквы, цифры и символы находятся в одних и тех же ячейках, то с кириллицей всё сложно. Например, в разных кодировках буква Ы
может находиться в ячейке 211, 114 и 69.
Именно поэтому на заре интернета чтобы посмотреть разные сайты с разными кодировками приходилось подбирать кодировку. (Но кто это помнит?) Сейчас кодировка страницы обычно прописана в заголовке страницы, что позволяет браузеру «автоматически» подбирать отображение символов на наших мониторах.
То есть сервер отдаёт не просто HTML-страничку, а указывает, что у неё кодировка Windows-1251
. Браузер таким образом, считывая информацию о кодировке полученного файла, подставляет символы из указанной кодировки.
Но и это ещё не всё веселье. Например, если на сервере установлена операционная система из семейства *nix (с кодировкой по умолчанию UTF-8
), а мы шлём файл из нашей любимой ОС Windows, где кодировка текстовых фалов по умолчанию стоит почему-то ANSI
, то как вы думаете сервер будет работать с текстом, кодировка которой не совпадает с его? Правильно! Как-то будет работать! Но результат работы может быть непредсказуемым и удивительным. =)
Надеюсь, что мотивация для обращение необходимого внимания на кодировку достаточная и можно перейти к сути вопроса: «Как же, чёрт возьми, сохранить файл в нужной кодировке?!»
В этой статье речь пойдёт как раз о том, как сохранить текстовый файл с помощью программы Блокнот (Notepad) в Windows в нужной кодировке.
Для того, чтобы изменить кодировку текстового файла, конечно же сперва его нужно создать. А после того, как файл создан, нужно ещё суметь его открыть. Самый простой способ отрыть файл — это двойной клик левой кнопкой мыши по его иконке в проводнике:
Если до этого настройки Windows не менялись, то файлы с расширением .txt
открываются в Блокноте. (Это ещё один способ, как отрыть Блокнот (Notepad).)
Чтобы поменять кодировку в открывшемся файле, нужно в меню «Файл» текстового редактора Блокнот выбрать пункт «Сохранить как…»:
Откроется диалоговое окно сохранения файла. Для смены кодировки, нужно выбрать из списка предлагаемых необходимый:
После того, как нужная кодировка выбрана, можно кликнуть на кнопку «Сохранить» или просто нажать Enter:
Так как мы не изменили имя файла, то будет перезаписан тот же самый файл. Поэтому возникает справедливый вопрос: «Файл с таким именем уже существует. Заменить?» Ну да, мы к этому и стремимся! Поменять кодировку у этого файла. Поэтому его нужно перезаписать с новой кодировкой. Соглашаемся:
Всё! Миссия по смене кодировки в текстовом файле выполнена! Файл сохранён с новой кодировкой. Можно закрыть текстовый редактор и устроить празднование этого решающего события! =D
Заберите ссылку на статью к себе, чтобы потом легко её найти 😉
Выберите, то, чем пользуетесь чаще всего:
Спасибо за внимание, оставайтесь на связи! Ниже ссылка на форум и обсуждение ; )
Статья — [CMD] Перевод кодировки текстовых файлов (через консольную утилиту win_iconv) | SafeZone
Конвертирование текстовых файлов с одной кодировки в другую с помощью win_iconvwin_iconv
Автор: Yukihiro Nakadaira
Версия: 0.0.6 (от 22.11.2012)
Это утилита с открытым исходным кодом: code.google
Синтаксис:
win_iconv [-c] [-s] [-f encoding] [-t encoding] [inputfile …]
Входная кодировка задаётся ключом -f, а выходная — ключом -t. Любая из этих кодировок по умолчанию равна локали системы. Все входные файлы читаются по очереди, если не задан параметр входного файла, то используется стандартный ввод, а конвертируемый текст выводится на стандартный вывод.
Когда задана опция -c, символы, которые не могут быть преобразованы просто выбрасываются. В противном случае при появлении подобной ошибки программа аварийно завершается.
Когда задана опция -s, сообщения об ошибках не выводятся.
Пример использования:
win_iconv -f UTF-16LE -t cp866 "UTFtext.txt" > "DOStext.txt"
Файл UTFtext.txt будет преобразован из кодировки UTF-16LE в OEM-866 и результат записан в файл DOStext.txt.Ключ -l выводит список доступных кодировок.
Спойлер: Перечень всех доступных кодировокCP65001
UTF8
UTF-8
CP1200
UTF16LE
UTF-16LE
UCS2LE
UCS-2LE
UCS-2-INTERNAL
CP1201
UTF16BE
UTF-16BE
UCS2BE
UCS-2BE
unicodeFFFE
CP12000
UTF32LE
UTF-32LE
UCS4LE
UCS-4LE
CP12001
UTF32BE
UTF-32BE
UCS4BE
UCS-4BE
UTF16
UTF-16
UCS2
UCS-2
UTF32
UTF-32
UCS-4
UCS4
ANSI_X3.4-1968
ANSI_X3.4-1986
ASCII
CP367
IBM367
ISO-IR-6
ISO646-US
ISO_646.IRV:1991
US
US-ASCII
CSASCII
CP819
IBM819
ISO-8859-1
ISO-IR-100
ISO8859-1
ISO_8859-1
ISO_8859-1:1987
L1
LATIN1
CSISOLATIN1
CP1250
MS-EE
WINDOWS-1250
CP1251
MS-CYRL
WINDOWS-1251
CP1252
MS-ANSI
WINDOWS-1252
CP1253
MS-GREEK
WINDOWS-1253
CP1254
MS-TURK
WINDOWS-1254
CP1255
MS-HEBR
WINDOWS-1255
CP1256
MS-ARAB
WINDOWS-1256
CP1257
WINBALTRIM
WINDOWS-1257
CP1258
WINDOWS-1258
850
CP850
IBM850
CSPC850MULTILINGUAL
862
CP862
IBM862
CSPC862LATINHEBREW
866
CP866
IBM866
CSIBM866
CP154
CYRILLIC-ASIAN
PT154
PTCP154
CSPTCP154
CP1133
IBM-CP1133
CP874
WINDOWS-874
CP51932
MS51932
WINDOWS-51932
EUC-JP
CP932
MS932
SHIFFT_JIS
SHIFFT_JIS-MS
SJIS
SJIS-MS
SJIS-OPEN
SJIS-WIN
WINDOWS-31J
WINDOWS-932
CSWINDOWS31J
CP50221
ISO-2022-JP
ISO-2022-JP-MS
ISO2022-JP
ISO2022-JP-MS
MS50221
WINDOWS-50221
CP936
GBK
MS936
WINDOWS-936
CP950
BIG5
BIG5HKSCS
BIG5-HKSCS
CP949
UHC
EUC-KR
CP1361
JOHAB
437
CP437
IBM437
CSPC8CODEPAGE437
CP737
CP775
IBM775
CSPC775BALTIC
852
CP852
IBM852
CSPCP852
CP853
855
CP855
IBM855
CSIBM855
857
CP857
IBM857
CSIBM857
CP858
860
CP860
IBM860
CSIBM860
861
CP-IS
CP861
IBM861
CSIBM861
863
CP863
IBM863
CSIBM863
CP864
IBM864
CSIBM864
865
CP865
IBM865
CSIBM865
869
CP-GR
CP869
IBM869
CSIBM869
CP1125
IBM037
IBM437
IBM500
ASMO-708
DOS-720
ibm737
ibm775
ibm850
ibm852
IBM855
ibm857
IBM00858
IBM860
ibm861
DOS-862
IBM863
IBM864
IBM865
cp866
ibm869
IBM870
windows-874
cp875
shift_jis
shift-jis
gb2312
ks_c_5601-1987
big5
big5hkscs
big5-hkscs
IBM1026
IBM01047
IBM01140
IBM01141
IBM01142
IBM01143
IBM01144
IBM01145
IBM01146
IBM01147
IBM01148
IBM01149
windows-1250
windows-1251
windows-1252
windows-1253
windows-1254
windows-1255
windows-1256
windows-1257
windows-1258
Johab
macintosh
x-mac-japanese
x-mac-chinesetrad
x-mac-korean
x-mac-arabic
x-mac-hebrew
x-mac-greek
x-mac-cyrillic
x-mac-chinesesimp
x-mac-romanian
x-mac-ukrainian
x-mac-thai
x-mac-ce
x-mac-icelandic
x-mac-turkish
x-mac-croatian
x-Chinese_CNS
x-cp20001
x_Chinese-Eten
x-cp20003
x-cp20004
x-cp20005
x-IA5
x-IA5-German
x-IA5-Swedish
x-IA5-Norwegian
us-ascii
x-cp20261
x-cp20269
IBM273
IBM277
IBM278
IBM280
IBM284
IBM285
IBM290
IBM297
IBM420
IBM423
IBM424
x-EBCDIC-KoreanExtended
IBM-Thai
koi8-r
IBM871
IBM880
IBM905
IBM00924
EUC-JP
x-cp20936
x-cp20949
cp1025
koi8-u
iso-8859-1
iso8859-1
iso_8859-1
iso_8859_1
iso-8859-2
iso8859-2
iso_8859-2
iso_8859_2
iso-8859-3
iso8859-3
iso_8859-3
iso_8859_3
iso-8859-4
iso8859-4
iso_8859-4
iso_8859_4
iso-8859-5
iso8859-5
iso_8859-5
iso_8859_5
iso-8859-6
iso8859-6
iso_8859-6
iso_8859_6
iso-8859-7
iso8859-7
iso_8859-7
iso_8859_7
iso-8859-8
iso8859-8
iso_8859-8
iso_8859_8
iso-8859-9
iso8859-9
iso_8859-9
iso_8859_9
iso-8859-13
iso8859-13
iso_8859-13
iso_8859_13
iso-8859-15
iso8859-15
iso_8859-15
iso_8859_15
x-Europa
iso-8859-8-i
iso8859-8-i
iso_8859-8-i
iso_8859_8-i
iso-2022-jp
csISO2022JP
iso-2022-jp
iso-2022-kr
iso2022-kr
x-cp50227
euc-jp
EUC-CN
euc-kr
hz-gb-2312
GB18030
x-iscii-de
x-iscii-be
x-iscii-ta
x-iscii-te
x-iscii-as
x-iscii-or
x-iscii-ka
x-iscii-ma
x-iscii-gu
x-iscii-pa
Что такое кодировка ANSI и с чем ее едят? Кодировка от алкоголя
Прежде чем отвечать на вопрос о том, что же такое кодировка ANSI Windows, ответим сначала на другой вопрос: «Что же такое кодировка вообще?»
У каждого компьютера, в каждой системе используется определенный набор символов, зависящий от языка, используемого пользователем, от его профессиональных компетенций и личных предпочтений.
Общее определение кодировки
Так, в русском языке используется 33 символа для обозначения букв, в английском — 26. Также используется 10 цифр для счета (0; 1; 2; 3; 4; 5; 6; 7; 8; 9) и некоторые специальные символы, минус, пробел, точка, процент и так далее.
Каждому из этих символов при помощи кодовой таблицы присваивается порядковый номер. К примеру, букве «A» может быть присвоен номер 1; «Z» — 26 и так далее.
Собственно, номер, представляющий символ как целое число, считается кодом символа, а кодировка — это, соответственно, набор символов в такой таблице.
Богатство разнообразия кодовых таблиц
На данный момент существует довольно большое количество кодировок и кодовых таблиц, используемых разными специалистами: это и ASCII, разработанная в 1963 году в Америке, и Windows-1251, совсем недавно еще бывшая популярной благодаря Microsoft, KOI8-R и Guobiao — и многие, многие другие, причем процесс их появления и отмирания происходит и по сей день.
Среди этого огромного списка совершенно особо держится так называемая кодировка ANSI.
Дело в том, что в свое время компания Microsoft создала целый набор кодовых страниц:
Все они получили общее название таблицы кодировки ANSI, или кодовой страницы ANSI.
Интересный факт: одной из первых кодовых таблиц стала ASCII, в 1963 году созданная American National Standards Institute (Американским национальным институтом стандартов), сокращенно называвшимся именно ANSI.
Помимо всего прочего, эта кодировка содержит и непечатные символы, так называемые «Управляющие последовательности», или ESC, уникальные для всех таблиц символов, зачастую несовместимые между собой. При умелом использовании, однако, они позволяли скрывать и восстанавливать курсор, переводить его с одного положения в тексте на другое, устанавливать табуляцию, стирать часть окна терминала, в котором велась работа, изменять форматирование текста на экране и менять цвет (или даже рисовать и подавать звуковые сигналы!). В 1976 году, кстати, это было довольно неплохим подспорьем для программистов. Кстати, терминал — это устройство, требующееся для ввода и вывода информации. В те далекие времена он представлял собой монитор и клавиатуру, подсоединенные к ЭВМ (электронной вычислительной машине).
Некорректное отображение символов
К сожалению, в дальнейшем подобная система вызвала многочисленные сбои в системах, выводя вместо желаемых стихов, лент новостей или описаний любимых компьютерных игр так называемые кракозябры — бессмысленные, нечитаемые наборы символов. Появление этих вездесущих ошибок было вызвано всего лишь попыткой отображать символы, закодированные в одной кодовой таблице, при помощи другой.
Чаще всего с последствиями неверного чтения этой кодировки мы сталкиваемся в Интернете до сих пор, когда наш браузер по какой-то причине не может достаточно точно определить, какая именно из Windows-**** кодировок используется в данный момент, из-за указания веб-мастером общей кодировки ANSI либо изначально неверной кодировки, к примеру, 1252 вместо 1521. Ниже представлена точная таблица кодировок.
Кириллическая таблица ANSI-кодировок, Windows-1251
Более того, в 1986 году ANSI была существенно расширена, благодаря Яну Э. Дэвису, написавшему пакет The Draw, позволяющий не просто использовать базовые, с нашей точки зрения, функции, но и полноценно (или почти полноценно) рисовать!
Подводя итоги
Таким образом, можно видеть, что кодировка ANSI, по сути, хоть и была довольно спорным решением, сохраняет свои позиции.
Со временем с легкой руки энтузиастов древний терминал ANSI перекочевал даже на телефоны!
Позже ASCII была расширена (изначально она не использовала все 8 бит), поэтому появилась возможность использовать уже не 128, а 256 (2 в 8 степени) различных символов, которые можно закодировать в одном байте информации.
Такое усовершенствование позволило добавлять в кодировку ASCII символы национальных языков разных стран, помимо уже существующей латиницы.
Вариантов расширенной кодировки ASCII существует очень много по причине того, что языков в мире тоже немало. Думаю, что многие из вас слышали о такой кодировке, как KOI8 (Код Обмена Информацией, 8 бит) — это тоже расширенная кодировка ASCII . KOI8 включала в себя цифры, буквы латинского и русского алфавита, а также знаки пунктуации, спецсимволы и псевдографику.
Кодировка ISO
Организация Международных стандартов (International Standards Organization) создала диапазон кодировок для различных алфавитов/языков.
Кодировка | Описание |
---|---|
ISO 8859-1 (Latin-1) | Расширенная латиница, включающая символы большинства западноевропейских языков (английский, датский, ирландский, исландский, испанский, итальянский, немецкий, норвежский, португальский, ретороманский, фарерский, шведский, шотландский (гэльский) и частично голландский, финский, французский), а также некоторых восточноевропейских (албанский) и африканских языков (африкаанс, суахили). В Latin-1 отсутствуют знак евро и заглавная буква Ÿ. Эта кодовая страница считается кодировкой по умолчанию для HTML-документов и сообщений электронной почты. Также этой кодовой странице соответствуют первые 256 символов Юникода. |
ISO 8859-2 (Latin-2) | Расширенная латиница, включающая символы центральноевропейских и восточноевропейских языков (боснийский, венгерский, польский, словацкий, словенский, хорватский, чешский). В Latin-2, как и в Latin-1, отсутствуют знак евро. |
ISO 8859-3 (Latin-3) | Расширенная латиница, включающая символы южноевропейских языков (мальтийский, турецкий и эсперанто). |
ISO 8859-4 (Latin-4) | Расширенная латиница, включающая символы североевропейских языков (гренландский, эстонский, латышский, литовский и саамские языки). |
ISO 8859-5 (Latin/Cyrillic) | Кириллица, включающая символы славянских языков (белорусский, болгарский, македонский, русский, сербский и частично украинский). |
ISO 8859-6 (Latin/Arabic) | Символы, используемые в арабском языке. Символы других языков с письмом на основе арабского не поддерживаются. Для корректного отображения текста в кодировке ISO 8859-6 требуется поддержка двунаправленного письма и контекстно-зависимых форм символов. |
ISO 8859-7 (Latin/Greek) | Символы современного греческого языка. Может использоваться также для записи древнегреческих текстов в монотонической орфографии. |
ISO 8859-8 (Latin/Hebrew) | Символы современного иврита. Используется в двух вариантах: с логическим порядком следования символов (требует поддержки двунаправленного письма) и с визуальным порядком следования символов. |
ISO 8859-9 (Latin-5) | Вариант Latin-1, в котором редко используемые символы исландского языка заменены на турецкие. Используется для турецкого и курдского языков. |
ISO 8859-10 (Latin-6) | Вариант Latin-4, более удобный для скандинавских языков. |
ISO 8859-11 (Latin/Thai) | Символы тайского языка. |
ISO 8859-13 (Latin-7) | Вариант Latin-4, более удобный для балтийских языков. |
ISO 8859-14 (Latin-8) | Расширенная латиница, включающая символы кельтских языков, таких как шотландский (гэльский) и бретонский. |
ISO 8859-15 (Latin-9) | Вариант Latin-1, в котором редко используемые символы заменены на необходимые для полной поддержки финского, французского и эстонского языков. Кроме того, в Latin-9 был добавлен знак евро. |
ISO 8859-16 (Latin-10) | Расширенная латиница, включающая символы южноевропейских и восточноевропейских (албанский, венгерский, итальянский, польский, румынский, словенский, хорватский), а также некоторых западноевропейских языков (ирландский в новой орфографии, немецкий, финский, французский). Как и в Latin-9, в Latin-10 был добавлен знак евро. |
Для документов на английском и большинстве других западноевропейских языков, широко поддерживается кодирование ISO-8859-1 .
В HTML ISO-8859-1 является кодировкой по умолчанию (в XHTML и в HTML5 кодировкой по умолчанию является UTF-8).
При использовании кодировки страницы, отличной от ISO-8859-1, вам необходимо указать это в теге .
Для HTML4:
Для HTML5:
Примером ANSI-кодировки является всем известная Windows-1251 .
Windows-1251 выгодно отличается от других 8 битных кириллических кодировок (таких как CP866 и ISO 8859-5) наличием практически всех символов, использующихся в русской типографике для обычного текста (отсутствует только знак ударения). Она также содержит все символы для других славянских языков: украинского, белорусского, сербского, македонского и болгарского.
Ниже приведены десятичные значения символов кодировки Windows-1251 .
Для отображения символов таблицы в HTML-документе воспользуйтесь следующим синтаксисом:
&# + код + ;
.0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
8. | Ђ 402 | Ѓ 403 | ‚ 201A | ѓ 453 | „ 201E | … 2026 | † 2020 | ‡ 2021 | € 20AC | ‰ 2030 | Љ 409 | ‹ 2039 | Њ 40A | Ќ 40C | Ћ 40B | Џ 40F |
9. | ђ 452 | ‘ 2018 | ’ 2019 | “ 201C | ” 201D | 2022 | – 2013 | — 2014 | ™ 2122 | љ 459 | › 203A | њ 45A | ќ 45C | ћ 45B | џ 45F | |
A. | A0 | Ў 40E | ў 45E | Ј 408 | ¤ A4 | Ґ 490 | ¦ A6 | § A7 | Ё 401 | © A9 | Є 404 | « AB | ¬ AC | AD | ® AE | Ї 407 |
B. | ° B0 | ± B1 | І 406 | і 456 | ґ 491 | µ B5 | ¶ B6 | · B7 | ё 451 | № 2116 | є 454 | » BB | ј 458 | Ѕ 405 | ѕ 455 | ї 457 |
C. | А 410 | Б 411 | В 412 | Г 413 | Д 414 | Е 415 | Ж 416 | З 417 | И 418 | Й 419 | К 41A | Л 41B | М 41C | Н 41D | О 41E | П 41F |
D. | Р 420 | С 421 | Т 422 | У 423 | Ф 424 | Х 425 | Ц 426 | Ч 427 | Ш 428 | Щ 429 | Ъ 42A | Ы 42B | Ь 42C | Э 42D | Ю 42E | Я 42F |
E. | а 430 | б 431 | в 432 | г 433 | д 434 | е 435 | ж 436 | з 437 | и 438 | й 439 | к 43A | л 43B | м 43C | н 43D | о 43E | п 43F |
F. | р 440 | с 441 | т 442 | у 443 | ф 444 | х 445 | ц 446 | ч 447 | ш 448 | щ 449 | ъ 44A | ы 44B | ь 44C | э 44D | ю 44E | я 44F |
Кодировки стандарта UNICODE
Юникод (англ. Unicode) — стандарт кодирования символов, позволяющий представить знаки почти всех письменностей мира, и специальных символов. Представляемые в юникоде символы кодируются целыми числами без знака. Юникод имеет несколько форм представления символов в компьютере: UTF-8, UTF-16 (UTF-16BE, UTF-16LE) и UTF-32 (UTF-32BE, UTF-32LE). (Англ. Unicode transformation format — UTF).
UTF-8 — это в настоящее время распространённая кодировка, которая нашла широкое применение в операционных системах и веб-пространстве. Текст, состоящий из символов Unicode с номерами меньше 128 (область с кодами от U+0000 до U+007F), содержит символы набора ASCII с соответствующими кодами. Далее расположены области знаков различных письменностей, знаки пунктуации и технические символы. Под символы кириллицы выделены области знаков с кодами от U+0400 до U+052F, от U+2DE0 до U+2DFF, от U+A640 до U+A69F.
Кодировка UTF-8 является универсальной и имеет внушительный резерв на будущее. Это делает ее наиболее удобной кодировкой для использования в интернете.
Если вам прислали текстовый документ, информация в котором отображается в виде странных и непонятных символов, можно предположить, что автор использовал кодировку, не распознаваемую вашим компьютером. Для изменения кодировки существуют специальные программы-декодеры, однако куда проще воспользоваться одним из онлайн-сервисов.
Сегодня мы расскажем о самых популярных и действенных сайтах, которые помогут угадать кодировку и изменить ее на более понятную для вашего ПК. Чаще всего на таких сайтах работает автоматический алгоритм распознавания, однако в случае необходимости пользователь всегда может выбрать подходящую кодировку в ручном режиме.
Способ 1: Универсальный декодер
Декодер предлагает пользователям просто скопировать непонятный отрывок текста на сайт и в автоматическом режиме переводит кодировку на более понятную. К преимуществам можно отнести простоту ресурса, а также наличие дополнительных ручных настроек, которые предлагают самостоятельно выбрать нужный формат.
Работать можно только с текстом, размер которого не превышает 100 килобайт, кроме того, создатели ресурса не гарантируют, что перекодировка будет в 100% случаев успешной. Если ресурс не помог – просто попробуйте распознать текст с помощью других способов.
Обратите внимание на то, что если в отправленном вам документе вместо символов отображается «???? ?? ??????» , преобразовать его вряд ли получится. Символы появляются из-за ошибок со стороны отправителя, поэтому просто попросите отправить вам текст повторно.
Способ 2: Студия Артемия Лебедева
Еще один сайт для работы с кодировкой, в отличие от предыдущего ресурса имеет более приятный дизайн. Предлагает пользователям два режима работы, простой и расширенный, в первом случае после декодировки пользователь видит результат, во втором случае видна начальная и конечная кодировка.
С сайтом любая непонятная каша из символов быстро превращается в понятный русский текст. На данный момент работает ресурс со всеми известными кодировками.
Способ 3: Fox Tools
Fox Tools предназначен для универсальной декодировки непонятных символов в обычный русский текст. Пользователь может самостоятельно выбрать начальную и конечную кодировку, есть на сайте и автоматический режим.
Несмотря на то, что сайт якобы распознает кодировку в автоматическом режиме, пользователю все равно приходится выбирать понятный результат в ручном режиме. Из-за данной особенности куда проще воспользоваться описанными выше способами.
Каноническое имя для | Каноническое имя для | Описание |
---|---|---|
Big5 | Big5 | Big5, традиционный китайский |
Big5-HKSCS | Big5_HKSCS | Big5 с расширениями для Гонконга, традиционный китайский (включая редакцию 2001 г.) |
EUC-JP | EUC_JP | JISX 0201, 0208 и 0212, кодировка EUC, японский язык |
EUC-KR | EUC_KR | KS C 5601, кодировка EUC, корейский |
ГБ18030 | ГБ18030 | Упрощенный китайский, стандарт КНР |
ГБ2312 | EUC_CN | GB2312, кодировка EUC, упрощенный китайский |
ГБК | ГБК | GBK, упрощенный китайский |
IBM-Thai | Cp838 | IBM Thailand расширенный SBCS |
IBM01140 | Cp1140 | Вариант Cp037 с символом евро |
IBM01141 | Cp1141 | Вариант CP273 с символом евро |
IBM01142 | Cp1142 | Вариант CP277 с символом евро |
IBM01143 | Cp1143 | Вариант Cp278 с символом евро |
IBM01144 | Cp1144 | Вариант CP280 с символом евро |
IBM01145 | Cp1145 | Вариант CP284 с символом евро |
IBM01146 | Cp1146 | Вариант CP285 с символом евро |
IBM01147 | Cp1147 | Вариант Cp297 с символом евро |
IBM01148 | Cp1148 | Вариант CP500 с символом евро |
IBM01149 | Cp1149 | Вариант Cp871 с символом евро |
IBM037 | Cp037 | США, Канада (двуязычный, французский), Нидерланды, Португалия, Бразилия, Австралия |
IBM1026 | Cp1026 | IBM Latin-5, Турция |
IBM1047 | Cp1047 | Набор символов Latin-1 для хостов EBCDIC |
IBM273 | Cp273 | IBM Австрия, Германия |
IBM277 | Cp277 | IBM Дания, Норвегия |
IBM278 | Cp278 | IBM Финляндия, Швеция |
IBM280 | Cp280 | IBM Италия |
IBM284 | Cp284 | IBM Каталонский / Испания, Испанский Латинская Америка |
IBM285 | Cp285 | IBM Соединенное Королевство, Ирландия |
IBM297 | Cp297 | IBM Франция |
IBM420 | Cp420 | IBM Арабский |
IBM424 | Cp424 | IBM Еврейский |
IBM500 | Cp500 | EBCDIC 500V1 |
IBM860 | Cp860 | MS-DOS Португальский |
IBM861 | Cp861 | MS-DOS Исландский |
IBM863 | Cp863 | MS-DOS Канадский французский |
IBM864 | Cp864 | PC Арабский |
IBM865 | Cp865 | MS-DOS Nordic |
IBM868 | Cp868 | MS-DOS Пакистан |
IBM869 | Cp869 | IBM Новогреческий |
IBM870 | Cp870 | IBM Multilingual Latin-2 |
IBM871 | Cp871 | IBM Исландия |
IBM918 | Cp918 | IBM, Пакистан (урду) |
ISO-2022-CN | ISO2022CN | GB2312 и CNS11643 в форме ISO 2022 CN, упрощенной и Традиционный китайский (только преобразование в Unicode) |
ISO-2022-JP | ISO2022JP | JIS X 0201, 0208, в форме ISO 2022, японский |
ISO-2022-KR | ISO2022KR | ISO 2022 KR, корейский |
ISO-8859-3 | ISO8859_3 | Латинский алфавит No.3 |
ISO-8859-6 | ISO8859_6 | Латинский / арабский алфавит |
ISO-8859-8 | ISO8859_8 | Латинский / еврейский алфавит |
JIS_X0201 | JIS_X0201 | JIS X 0201 |
JIS_X0212-1990 | JIS_X0212-1990 | JIS X 0212 |
Shift_JIS | SJIS | Shift-JIS, Японский |
ТИС-620 | TIS620 | TIS620, тайский |
окна-1255 | Cp1255 | Windows Иврит |
окна-1256 | Cp1256 | Windows арабский |
окна-1258 | Cp1258 | Windows Вьетнамский |
окна-31j | MS932 | Windows Японский |
x-Big5-Solaris | Big5_Solaris | Big5 с семью дополнительными отображениями идеограммы Ханзи для Solaris zh_TW.BIG5 язык |
x-euc-jp-linux | EUC_JP_LINUX | JISX 0201, 0208, кодировка EUC, японский язык |
х-EUC-TW | EUC_TW | CNS11643 (плоскость 1-7,15), кодировка EUC, традиционный китайский |
x-eucJP-Open | EUC_JP_Solaris | JISX 0201, 0208, 0212, кодировка EUC, японский язык |
х-IBM1006 | Cp1006 | IBM AIX Пакистан (урду) |
х-IBM1025 | Cp1025 | IBM Multilingual Cyrillic: Болгария, Босния, Герцеговина, Македония (FYR) |
х-IBM1046 | Cp1046 | IBM Arabic — Windows |
х-IBM1097 | Cp1097 | IBM Иран (фарси) / персидский |
х-IBM1098 | Cp1098 | IBM Иран (фарси) / персидский (ПК) |
х-IBM1112 | Cp1112 | IBM Латвия, Литва |
х-IBM1122 | Cp1122 | IBM Эстония |
х-IBM1123 | Cp1123 | IBM Украина |
х-IBM1124 | Cp1124 | IBM AIX Украина |
х-IBM1381 | Cp1381 | IBM OS / 2, DOS Китайская Народная Республика (КНР) |
х-IBM1383 | Cp1383 | IBM AIX Китайская Народная Республика (КНР) |
х-IBM33722 | Cp33722 | IBM-eucJP — японский (расширенный набор 5050) |
х-IBM834 | Cp834 | IBM EBCDIC DBCS-only Korean |
х-IBM856 | Cp856 | IBM Еврейский |
х-IBM875 | Cp875 | IBM Греческий |
х-IBM921 | Cp921 | IBM Латвия, Литва (AIX, DOS) |
х-IBM922 | Cp922 | IBM Эстония (AIX, DOS) |
х-IBM930 | Cp930 | Японский катакана и кандзи смешанные с 4370 UDC, расширенный набор 5026 |
х-IBM933 | Cp933 | Корейский смешанный с 1880 УДК, расширенный набор 5029 |
х-IBM935 | Cp935 | Узел на упрощенном китайском, смешанный с 1880 UDC, расширенный набор 5031 |
х-IBM937 | Cp937 | Традиционный китайский хост, соединенный с 6204 UDC, расширенный набор 5033 |
х-IBM939 | Cp939 | Японские латинские кандзи, смешанные с 4370 УДК, расширенный набор из 5035 |
х-IBM942 | Cp942 | IBM OS / 2 Японский, расширенный набор Cp932 |
х-IBM942C | Cp942C | Вариант Cp942 |
х-IBM943 | Cp943 | IBM OS / 2 на японском языке, расширенный набор Cp932 и Shift-JIS |
х-IBM943C | Cp943C | Вариант Cp943 |
х-IBM948 | Cp948 | OS / 2 Китайский (Тайвань) расширенный набор 938 |
х-IBM949 | Cp949 | ПК корейский |
х-IBM949C | Cp949C | Вариант Cp949 |
х-IBM950 | Cp950 | ПК Китайский (Гонконг, Тайвань) |
х-IBM964 | Cp964 | AIX китайский (Тайвань) |
х-IBM970 | Cp970 | AIX корейский |
х-ISCII91 | ISCII91 | ISCII91 кодировка индийских скриптов |
х-ISO2022-CN-CNS | ISO2022_CN_CNS | CNS11643 в форме ISO 2022 CN, традиционный китайский (преобразование только из Unicode) |
х-ISO2022-CN-ГБ | ISO2022_CN_GB | GB2312 в форме ISO 2022 CN, упрощенный китайский (преобразование из Только Unicode) |
x-iso-8859-11 | x-iso-8859-11 | Латинский / тайский алфавит |
х-JIS0208 | х-JIS0208 | JIS X 0208 |
x-JISAutoDetect | JISAutoDetect | Обнаруживает и преобразует Shift-JIS, EUC-JP, ISO 2022 JP (преобразование только в Unicode) |
x-Johab | x-Johab | Корейский, набор символов Джохаб |
x-Mac Арабский | Макарабский | Macintosh Арабский |
x-MacCentralEurope | MacCentralEurope | Macintosh Latin-2 |
x-MacCroatian | Макхорватский | Macintosh Хорватский |
x-MacCyrillic | MacCyrillic | Macintosh Кириллица |
х-MacDingbat | MacDingbat | Macintosh Dingbat |
x-MacGreek | MacGreek | Macintosh Греческий |
x-Mac, Иврит | MacHebrew | Macintosh Еврейский |
x-MacIceland | MacIceland | Macintosh Исландия |
x-MacRoman | MacRoman | Macintosh Роман |
x-Mac Румыния | MacRomania | Macintosh Румыния |
x-MacSymbol | MacSymbol | Macintosh Symbol |
x-MacThai | MacThai | Macintosh Thai |
x-Mac Турецкий | MacTurkish | Macintosh Турецкий |
x-Mac Украина, | Mac Украина | Macintosh Украина |
х-MS950-HKSCS | MS950_HKSCS | Windows Традиционный китайский с расширениями для Гонконга |
x-mswin-936 | MS936 | Windows (упрощенный китайский) |
x-PCK | PCK | Solaris версия Shift_JIS |
x-SJIS_0213 | x-SJIS_0213 | Shift_JISX0213 |
x-windows-50220 | Cp50220 | Кодовая страница Windows 50220 (7-битная реализация) |
x-windows-50221 | Cp50221 | Кодовая страница Windows 50221 (7-битная реализация) |
x-окна-874 | MS874 | Windows Тайский |
x-windows-949 | MS949 | Windows Корейский |
x-windows-950 | MS950 | Windows Традиционный китайский |
x-windows-iso2022jp | x-windows-iso2022jp | Вариант ISO-2022-JP (на основе MS932) |
PostgreSQL: Документация: 9.3: Поддержка набора символов
Поддержка набора символов в PostgreSQL позволяет хранить текст в множество наборов символов (также называемых кодировками), включая однобайтовые наборы символов, такие как серия ISO 8859 и многобайтовые наборы символов, такие как EUC (Extended Unix Code), UTF-8 и Mule внутренний код. Можно использовать все поддерживаемые наборы символов. прозрачно для клиентов, но некоторые из них не поддерживаются для использования внутри сервера (то есть как кодирование на стороне сервера). По умолчанию набор символов выбирается при инициализации кластера базы данных PostgreSQL с помощью initdb.Его можно переопределить при создании база данных, поэтому у вас может быть несколько баз данных с разными набор символов.
Однако важным ограничением является то, что каждая база данных набор символов должен быть совместим с настройками локали базы данных LC_CTYPE (классификация символов) и LC_COLLATE (порядок сортировки строк). Для C или POSIX языковой стандарт, разрешен любой набор символов, но для других языков есть это только один набор символов, который будет работать правильно. (В Windows однако кодировку UTF-8 можно использовать с любой локалью.)
Таблица 22-1 показывает наборы символов, доступные для использования в PostgreSQL.
Таблица 22-1. PostgreSQL Наборы символов
Имя | Описание | Язык | Сервер? | байт / символ | Псевдонимы |
---|---|---|---|---|---|
BIG5 | Большая пятерка | Традиционный китайский | Нет | 1-2 | WIN950, Windows950 |
EUC_CN | Расширенный код UNIX — CN | Упрощенный китайский | Есть | 1-3 | |
EUC_JP | Расширенный код UNIX — JP | Японский | Есть | 1-3 | |
EUC_JIS_2004 | Расширенный код UNIX-JP, JIS X 0213 | Японский | Есть | 1-3 | |
EUC_KR | Расширенный код UNIX-KR | Корейский | Есть | 1-3 | |
EUC_TW | Расширенный код UNIX-TW | Традиционный китайский, Тайваньский | Есть | 1-3 | |
ГБ18030 | Национальный стандарт | китайский | Нет | 1–4 | |
ГБК | Расширенный национальный стандарт | Упрощенный китайский | Нет | 1-2 | WIN936, Windows936 |
ISO_8859_5 | ISO 8859-5, ECMA 113 | Латиница / кириллица | Есть | 1 | |
ISO_8859_6 | ISO 8859-6, ECMA 114 | Латинский / арабский | Есть | 1 | |
ISO_8859_7 | ISO 8859-7, ECMA 118 | Латинский / греческий | Есть | 1 | |
ISO_8859_8 | ISO 8859-8, ECMA 121 | Латиница / Иврит | Есть | 1 | |
JOHAB | JOHAB | Корейский (хангыль) | Нет | 1-3 | |
КОИ8Р | КОИ8-Р | Кириллица (русская) | Есть | 1 | КОИ8 |
КОИ8У | КОИ8-У | Кириллица (украинская) | Есть | 1 | |
ЛАТИН 1 | ISO 8859-1, ECMA 94 | Западноевропейская | Есть | 1 | ISO88591 |
ЛАТИН 2 | ISO 8859-2, ECMA 94 | Центральноевропейская | Есть | 1 | ISO88592 |
ЛАТИН 3 | ISO 8859-3, ECMA 94 | Южноевропейский | Есть | 1 | ISO88593 |
ЛАТИН 4 | ISO 8859-4, ECMA 94 | Северо-Европейский | Есть | 1 | ISO88594 |
LATIN5 | ISO 8859-9, ECMA 128 | Турецкий | Есть | 1 | ISO88599 |
LATIN6 | ISO 8859-10, ECMA 144 | Скандинавский | Есть | 1 | ISO885910 |
LATIN7 | ISO 8859-13 | Балтика | Есть | 1 | ISO885913 |
LATIN8 | ISO 8859-14 | Кельтский | Есть | 1 | ISO885914 |
ЛАТИН 9 | ISO 8859-15 | LATIN1 с евро и акцентами | Есть | 1 | ISO885915 |
ЛАТИН 10 | ISO 8859-16, ASRO SR 14111 | Румынский | Есть | 1 | ISO885916 |
MULE_INTERNAL | Мул внутренний код | Многоязычный Emacs | Есть | 1–4 | |
SJIS | Сдвиг JIS | Японский | Нет | 1-2 | Мсканджи, ShiftJIS, WIN932, Окна932 |
SHIFT_JIS_2004 | Сдвиг JIS, JIS X 0213 | Японский | Нет | 1-2 | |
SQL_ASCII | не указано (см. Текст) | любой | Есть | 1 | |
UHC | Единый код хангыль | Корейский | Нет | 1-2 | WIN949, Windows949 |
UTF8 | Unicode, 8-битный | все | Есть | 1–4 | Юникод |
WIN866 | Окна CP866 | Кириллица | Есть | 1 | ALT |
WIN874 | Окна CP874 | Тайский | Есть | 1 | |
WIN1250 | Окна CP1250 | Центральноевропейская | Есть | 1 | |
WIN1251 | Окна CP1251 | Кириллица | Есть | 1 | ВЫИГРАТЬ |
WIN1252 | Окна CP1252 | Западноевропейская | Есть | 1 | |
WIN1253 | Окна CP1253 | Греческий | Есть | 1 | |
WIN1254 | Окна CP1254 | Турецкий | Есть | 1 | |
WIN1255 | Окна CP1255 | Еврейский | Есть | 1 | |
WIN1256 | Окна CP1256 | Арабский | Есть | 1 | |
WIN1257 | Окна CP1257 | Балтика | Есть | 1 | |
WIN1258 | Окна CP1258 | Вьетнамский | Есть | 1 | ABC, TCVN, TCVN5712, VSCII |
Не все клиентские API поддерживают все перечисленные наборы символов.Например, драйвер PostgreSQL JDBC не поддерживает MULE_INTERNAL, LATIN6, LATIN8 и ЛАТИНСКИЙ 10.
Параметр SQL_ASCII ведет себя значительно отличается от других настроек. Когда сервер набор символов — SQL_ASCII, сервер интерпретирует байтовые значения 0-127 в соответствии со стандартом ASCII, а байтовые значения 128–255 считаются неинтерпретируемыми символами. Нет преобразование кодировки будет выполнено, если установлено значение SQL_ASCII. Таким образом, этот параметр не так уж и хорош. объявление, что используется определенная кодировка, как объявление незнание кодировки.В большинстве случаев, если вы работаете с любыми данными, отличными от ASCII, неразумно использовать параметр SQL_ASCII, потому что PostgreSQL не сможет вам помочь преобразование или проверка символов, отличных от ASCII.
initdb определяет символ по умолчанию установить (кодировку) для PostgreSQL кластер. Например,
initdb -E EUC_JP
устанавливает набор символов по умолчанию на EUC_JP (расширенный код Unix для японского языка). Вы можете используйте —encoding вместо -E, если вы предпочитаете более длинные строки параметров. Если нет -E или —encoding задана опция, initdb пытается определить подходящую кодировку для использования на основе указанного или языковой стандарт по умолчанию.
Вы можете указать нестандартную кодировку при создании базы данных. время, при условии, что кодировка совместима с выбранной язык:
createdb -E EUC_KR -T template0 --lc-collate = ko_KR.euckr --lc-ctype = ko_KR.euckr корейский
Это создаст базу данных с именем korean, которая использует набор символов EUC_KR и локаль ko_KR. Другой способ добиться этого — использовать эту команду SQL:
СОЗДАТЬ БАЗУ ДАННЫХ корейский С КОДИРОВАНИЕМ 'EUC_KR' LC_COLLATE = 'ko_KR.euckr' LC_CTYPE = 'ko_KR.euckr 'TEMPLATE = template0;
Обратите внимание, что приведенные выше команды определяют копирование базы данных template0. При копировании любой другой базы данных, настройки кодировки и локали не могут быть изменены по сравнению с исходной базы данных, поскольку это может привести к повреждению данных. Для дополнительную информацию см. в разделе 21.3.
Кодировка для базы данных хранится в системном каталоге. pg_database. Вы можете увидеть это, используя параметр psql -l или команда \ l.
$ psql -l Список баз данных Имя | Владелец | Кодирование | Сортировка | Ctype | Привилегии доступа ----------- + ---------- + ----------- + ------------- + - ------------ + ------------------------------------- clocaledb | хлиннака | SQL_ASCII | C | C | englishdb | хлиннака | UTF8 | en_GB.UTF8 | en_GB.UTF8 | японский | хлиннака | UTF8 | ja_JP.UTF8 | ja_JP.UTF8 | корейский | хлиннака | EUC_KR | ko_KR.euckr | ko_KR.euckr | postgres | хлиннака | UTF8 | fi_FI.UTF8 | fi_FI.UTF8 | template0 | хлиннака | UTF8 | fi_FI.UTF8 | fi_FI.UTF8 | {= c / hlinnaka, hlinnaka = CTc / hlinnaka} template1 | хлиннака | UTF8 | fi_FI.UTF8 | fi_FI.UTF8 | {= c / hlinnaka, hlinnaka = CTc / hlinnaka} (7 рядов)
Важно: В большинстве современных операционных систем PostgreSQL может определить, какой набор символов подразумевается настройкой LC_CTYPE, и это заставит использовать только соответствующую кодировку базы данных.На старые системы, вы несете ответственность за использование кодировка, ожидаемая выбранной вами локалью. Ошибка в эта область может привести к странному поведению зависящего от локали такие операции, как сортировка.
PostgreSQL позволит суперпользователи для создания баз данных с кодировкой SQL_ASCII, даже если LC_CTYPE не C или POSIX. Как отмечалось выше, SQL_ASCII не требует, чтобы данные, хранящиеся в база данных имеет какую-либо конкретную кодировку, поэтому этот выбор ставит риски ненадлежащего поведения, зависящего от местных условий.Используя эту комбинацию настройки устарели и когда-нибудь могут быть полностью запрещены.
PostgreSQL поддерживает автоматические преобразование набора символов между сервером и клиентом наверняка комбинации наборов символов. Информация о преобразовании хранится в системный каталог pg_conversion. PostgreSQL поставляется с некоторыми предопределенные преобразования, как показано в Таблице 22-2. Ты может создать новое преобразование с помощью команды SQL CREATE CONVERSION.
Таблица 22-2. Преобразование набора символов клиент / сервер
Набор символов сервера | Доступные наборы символов клиента |
---|---|
BIG5 | не поддерживается в качестве сервера кодировка |
EUC_CN | EUC_CN, MULE_INTERNAL, UTF8 |
EUC_JP | EUC_JP, MULE_INTERNAL, SJIS, UTF8 |
EUC_JIS_2004 | EUC_JIS_2004, SHIFT_JIS_2004, UTF8 |
EUC_KR | EUC_KR, MULE_INTERNAL, UTF8 |
EUC_TW | EUC_TW, BIG5, MULE_INTERNAL, UTF8 |
ГБ18030 | не поддерживается в качестве сервера кодировка |
ГБК | не поддерживается в качестве сервера кодировка |
ISO_8859_5 | ISO_8859_5, KOI8R, MULE_INTERNAL, UTF8, WIN866, WIN1251 |
ISO_8859_6 | ISO_8859_6, UTF8 |
ISO_8859_7 | ISO_8859_7, UTF8 |
ISO_8859_8 | ISO_8859_8, UTF8 |
JOHAB | не поддерживается в качестве сервера кодировка |
КОИ8Р | KOI8R, ISO_8859_5, MULE_INTERNAL, UTF8, WIN866, WIN1251 |
КОИ8У | КОИ8У, UTF8 |
ЛАТИН 1 | LATIN1, MULE_INTERNAL, UTF8 |
ЛАТИН 2 | LATIN2, MULE_INTERNAL, UTF8, WIN1250 |
ЛАТИН 3 | LATIN3, MULE_INTERNAL, UTF8 |
ЛАТИН 4 | LATIN4, MULE_INTERNAL, UTF8 |
LATIN5 | LATIN5, UTF8 |
LATIN6 | LATIN6, UTF8 |
LATIN7 | LATIN7, UTF8 |
LATIN8 | LATIN8, UTF8 |
ЛАТИН 9 | LATIN9, UTF8 |
ЛАТИН 10 | LATIN10, UTF8 |
MULE_INTERNAL | MULE_INTERNAL, BIG5, EUC_CN, EUC_JP, EUC_KR, EUC_TW, ISO_8859_5, KOI8R, LATIN1 в LATIN4, SJIS, WIN866, WIN1250, WIN1251 |
SJIS | не поддерживается в качестве сервера кодировка |
SHIFT_JIS_2004 | не поддерживается в качестве сервера кодировка |
SQL_ASCII | любые (конвертации не будет выполнено) |
UHC | не поддерживается в качестве сервера кодировка |
UTF8 | все поддерживаются кодировки |
WIN866 | WIN866, ISO_8859_5, KOI8R, MULE_INTERNAL, UTF8, WIN1251 |
WIN874 | WIN874, UTF8 |
WIN1250 | WIN1250, LATIN2, MULE_INTERNAL, UTF8 |
WIN1251 | WIN1251, ISO_8859_5, KOI8R, MULE_INTERNAL, UTF8, WIN866 |
WIN1252 | WIN1252, UTF8 |
WIN1253 | WIN1253, UTF8 |
WIN1254 | WIN1254, UTF8 |
WIN1255 | WIN1255, UTF8 |
WIN1256 | WIN1256, UTF8 |
WIN1257 | WIN1257, UTF8 |
WIN1258 | WIN1258, UTF8 |
Чтобы включить автоматическое преобразование набора символов, вы должны указать PostgreSQL набор символов (кодировка), которую вы хотели бы использовать в клиенте.Есть несколько способов добиться этого:
Использование команды \ encoding в psql. \ encoding позволяет изменять кодировку клиента на муха. Например, чтобы изменить кодировку на SJIS, введите:
.\ кодировка SJIS
libpq (Раздел 31.10) имеет функции для управления клиентская кодировка.
Использование SET client_encoding TO. Параметр кодирование клиента может быть выполнено с помощью этой команды SQL:
УСТАНОВИТЬ CLIENT_ENCODING В 'значение';
Также вы можете использовать стандартный синтаксис SQL SET ИМЕНА для этого:
УСТАНОВИТЬ ИМЯ 'значение';
Для запроса текущей клиентской кодировки:
ПОКАЗАТЬ client_encoding;
Для возврата к кодировке по умолчанию:
СБРОС client_encoding;
Использование PGCLIENTENCODING.Если переменная среды PGCLIENTENCODING — это определена в клиентской среде, эта клиентская кодировка автоматически выбирается при подключении к серверу. (Впоследствии это можно изменить, используя любой из других методов. упомянуто выше.)
Использование переменной конфигурации client_encoding. Если установлена переменная client_encoding, эта клиентская кодировка выбирается автоматически при подключении к сервер сделан. (Впоследствии это может быть отменено с помощью любого других методов, упомянутых выше.)
Если преобразование определенного символа невозможно — предположим, вы выбрали EUC_JP для сервера и LATIN1 для клиента, а некоторые Возвращаются японские символы, которые не имеют представления в LATIN1 — сообщается об ошибке.
Если набор символов клиента определен как SQL_ASCII, преобразование кодировки отключено, независимо от набора символов сервера. Как и в случае с сервером, использование SQL_ASCII неразумно, если вы не работа с данными в формате ASCII.
Это хорошие источники для начала изучения различных видов системы кодирования.
- CJKV Обработка информации: китайский, Японская, корейская и вьетнамская вычислительная техника
Содержит подробные объяснения EUC_JP, EUC_CN, EUC_KR, EUC_TW.
- http://www.unicode.org/
Веб-сайт Консорциума Unicode.
- RFC 3629
UTF-8 (8-битный UCS / Unicode Формат преобразования) определяется здесь.
Добавление поддержки параметров кодирования XML
Добавление поддержки параметров кодирования XMLОткрыть тему с навигацией
InstallShield 2014 г.
InstallShield позволяет указать, какой тип кодировки следует использовать для файла XML. Этот параметр доступен на вкладке «Дополнительно» при выборе файла XML в представлении «Изменения файла XML». Если тип кодировки, который вы хотите использовать, не включен в список доступных параметров кодирования, вы можете изменить один из файлов, установленных во вложенной папке папки InstallShield Program Files, чтобы добавить дополнительные параметры.Вы можете добавить любую кодировку, поддерживаемую MSXML. Следующие инструкции объясняют, как это сделать.
Внимание! Следующие инструкции требуют, чтобы вы изменили файл Settings.xml, устанавливаемый вместе с InstallShield. Этот файл содержит важные данные; если он отредактирован неправильно, это может привести к сбою работы InstallShield. Будьте предельно осторожны при редактировании этого файла.
Чтобы добавить дополнительные параметры кодирования в список «Кодировка» на вкладке «Дополнительно» в представлении «Изменения файла XML»:
2. | Найдите файл Settings.xml, установленный вместе с InstallShield. Settings.xml устанавливается в одно из следующих мест, в зависимости от того, какую языковую версию InstallShield вы используете: |
• | Английский — InstallShield Program Files Folder \ System \ 0409 |
• | Японский — папка с файлами программы InstallShield \ System \ 0411 |
3. | Создайте резервную копию файла Settings.xml на случай, если позже вам потребуется вернуться к исходной версии. |
4. | Используйте текстовый редактор или редактор XML-файлов, чтобы открыть файл Settings.xml. |
5. | Найдите элемент ISXML и его дочерние элементы. Выглядят они примерно так: |
<Кодировки>
6. | Между открывающим и закрывающим тегами Encodings добавьте новую строку, например: |
, где Type_of_Encoding указывает кодировку, которая должна быть доступна. Это должно быть значение, которое InstallShield должен использовать для атрибута кодировки вашего XML-документа.
7. | Сохраните файл Settings.xml. |
8. | Убедитесь, что ваш XML-код правильно сформирован; если он неправильно сформирован, у вас могут возникнуть проблемы с использованием InstallShield. В большинстве случаев вы можете определить неправильно сформированный XML-код, открыв файл Settings.xml в Internet Explorer. Вы должны иметь возможность расширять и сжимать элементы |
В следующий раз, когда вы откроете представление изменений XML-файла в InstallShield, вы увидите тип кодировки, который вы добавили, как один из доступных вариантов в Кодировке, используемой для нового списка файлов на вкладке «Дополнительно» для XML-файла в представление «Изменения файла XML».
См. Также
Вкладка Advanced для файла XML
Настройка дополнительных параметров для InstallShield
Руководство пользователяГлава 6: Поддержка Unicode и не-ASCII
Глава 6.Поддержка Unicode и не-ASCII
6.1 Формат для печати в кавычках
6.2 Символы, отличные от ASCII в заголовках
6.3 Unicode и UTF-8
6.4 Поддержка UTF-8 в AspEmail
6.5 Допустимые значения CharSet
6.1 Формат цитируемой печати
AspEmail может отправлять сообщения в алфавитах, отличных от US-ASCII. за счет поддержки формата «Цитата для печати». Этот формат описан в RFC-2045.Идея формата заключается в том, что символы с кодами меньше 33 и больше чем 126 представлены знаком «=», за которым следует двузначное шестнадцатеричное представление. ценности персонажа. Например, десятичное значение 12 (подача формы US-ASCII) представлен как = 0C , а десятичное значение 61 (US-ASCII «=») может быть представлено как = 3D .AspEmail кодирует тело сообщения в формате Quoted-Printable автоматически, если для свойства ContentTransferEncoding установлено значение строка «Quoted-Printable» (регистр букв не имеет значения).Вы также можете установить свойство Charset к соответствующему набору символов. Следующий фрагмент кода отправляет сообщение на русском языке:
<% @ codepage = 1251%>
<%
…
Mail.Charset = «Windows-1251»
Mail.Body = «-«.
Mail.ContentTransferEncoding = «Quoted-Printable»
%>Директива <% @ codepage = 1251%> предписывает интерпретатор ASP для обработки жестко запрограммированных символов в сценарии в виде русских символов (1251 — русская кодовая страница).Как результат, свойство Body получит русскую строку Unicode.
6.2 Символы не-ASCII в заголовках
Если вы хотите отправить сообщение с определенными заголовками, например, Тема: , To: или From: , содержащие символы, отличные от US-ASCII, вы должны использовать метод Mail.EncodeHeader для кодирования строки символов в соответствии с RFC 1522.Метод принимает один обязательный параметр, строку заголовка, и один необязательный параметр, набор символов, который по умолчанию равен « ISO-8859-1 ». Например:<% @ codepage = 1251%>
<%
Mail.Subject = Mail.EncodeHeader («-«, «Windows-1251»)
Mail.FromName = Mail.EncodeHeader («», «Windows-1251»)
Mail.AddAddress «[email protected]», Mail.EncodeHeader («»)
%>
6.3 Юникод и UTF-8
Из MSDN: «Юникод — это 16-битный стандарт кодировки символов фиксированной ширины, который охватывает практически все символы, обычно используемые на компьютерах сегодня. Это включает в себя большинство письменных языков мира, а также издательские персонажи, математические и технические символы и знаки препинания «.С Unicode.org: «Компьютеры … хранят буквы и другие символы присвоение номера каждому.До изобретения Unicode существовало сотни различных систем кодирования для присвоения этих чисел. Ни одна кодировка не может содержать достаточно символов … Unicode предоставляет уникальный номер для каждого символа, независимо от того, какая платформа, какая программа, на каком языке ».
Например, основная латинская буква «А» имеет шестнадцатеричный код 0041 (65), русский буква имеет код Hex 0416 (1046), а китайский иероглиф имеет код Hex 32A5 (12965).
UTF-8 (формат преобразования Unicode, 8-битная форма кодирования) рекомендуется формат, который будет использоваться для отправки данных на основе Unicode по сетям, в частности, через Интернет. UTF-8 представляет значение Unicode как последовательность из 1, 2 или 3 байтов.
Символы Юникода в диапазоне от 0000 до 007F кодируются просто как байты. 00 до 7F. Это означает, что файлы и строки, содержащие только 7-битный ASCII символы имеют одинаковую кодировку как в ASCII, так и в UTF-8.Следовательно, Unicode 0041 («A») в UTF-8 — это Hex 41.
Символы Юникода в диапазоне от 0080 до 07FF кодируются как последовательность из двух байтов. Например, Unicode 0416 () кодируется как Hex D0 96. Кодируются символы Unicode в диапазоне от Hex 0800 до FFFF. как последовательность из трех байтов. Например, Unicode 32A5 () кодируется как Hex E3 8A A5.
Начиная с Unicode 2.0, символы больше не ограничиваются диапазоном от Hex 0000 до Hex FFFF, называемым базовой многоязычной плоскостью (BMP).Также поддерживаются символы в диапазоне от Hex 10000 до Hex 10FFFF, называемые дополнительными кодовыми точками . Среди последних — Emoji символов, например:
Иконка Кодовая точка (шестнадцатеричная) Кодировка (шестнадцатеричная) 😂 1F602 D83D DE02 🌹 1F339 D8322 Поскольку символы Emoji (и другие дополнительные кодовые точки) превышают шестнадцатеричный FFFF, они должны быть представлены двумя 16-битными числами вместо одного, как показано в правом столбце таблицы выше.Эти два числа называются старшей суррогатной кодовой точкой и младшей суррогатной кодовой точкой . Формулы для преобразования дополнительной кодовой точки в ее высокие и низкие суррогаты следующие:привет = (cp — 0x10000) / 0x400 + 0xD800
lo = (cp — 0x10000)% 0x400 + 0xDC00Эти числа пригодятся, когда нужно включить эмодзи в тему электронного письма, как показано в следующем разделе.
6.4 Поддержка UTF-8 в AspEmail
AspEmail 5.0 предлагает полную поддержку UTF-8 как в теле сообщения, так и в заголовках. Чтобы отправить сообщение в кодировке UTF-8, вы должны установить CharSet свойство к строке « UTF-8 » (регистр не имеет значения), и ContentTransferEncoding на « Quoted-Printable ». Вы также должны передать « UTF-8 » в качестве второго аргумента для EncodeHeader .В следующем примере кода демонстрируется использование UTF-8:
<%
‘изменить на адрес вашего собственного SMTP-сервера
strHost = «smtp.myisp.net «‘Включить UTF-8 -> Перевод Unicode для элементов формы
Session.CodePage = 65001 ‘Код UTF-8Если Запрос («Отправить») «» То
Установите Mail = Server.CreateObject («Persits.MailSender»)
‘введите действительный SMTP-хост
Mail.Host = strHostMail.From = «[email protected]» ‘с адреса
Mail.FromName = Mail.EncodeHeader (Запрос («FromName»), «utf-8»)
Почта.Запрос AddAddress («Кому»)‘тема сообщения
Mail.Subject = Mail.EncodeHeader (Запрос («Тема»), «utf-8»)‘тело сообщения
Mail.Body = Request («Body»)‘Параметры UTF-8
Mail.CharSet = «UTF-8»
Mail.ContentTransferEncoding = «Quoted-Printable»
Mail.Send ‘отправить сообщение
Response.Write «Сообщение отправлено» & Request («To»)
Конец, если
%>
AspEmail: Unicode.asp
В этом примере кода есть несколько важных элементов, которые нельзя упускать из виду:
Этот тег META определяет набор символов для этой страницы как UTF-8.Это, помимо прочего, указывает браузеру кодировать все элементы формы в кодировке UTF8. когда форма отправлена.
Session.CodePage = 65001
Эта строка указывает нашему сценарию ASP преобразовывать элементы формы в кодировке UTF8. (возвращается коллекцией Request.Form) обратно к обычным строкам Unicode. Номер 65001 — это кодовая страница UTF-8.
Mail.Subject = Mail.EncodeHeader (Запрос («Тема»), «utf-8»)
Второй необязательный аргумент установлен в «UTF-8» для правильного кодирования заголовка.
Mail.CharSet = «UTF-8»
Mail.ContentTransferEncoding = «Quoted-Printable»
Эти две строки обеспечивают правильную кодировку UTF-8 тела сообщения.
Щелкните ссылки ниже, чтобы запустить этот пример кода:
http: //localhost/aspemail/NonAscii/Unicode.asp
http: //localhost/aspemail/NonAscii/Unicode.aspxМетод EncodeHeader также можно использовать для включения символов Emoji в тему сообщения.Двухзначная кодировка Emoji должна использоваться вместе со встроенным кодом VBScript ChrW . функция, которая преобразует число в 2-байтовый символ (Unicode). В следующих фрагментах кода добавлены два смайлика, смеющееся лицо и роза (упомянутые в предыдущем разделе). в тему:
…
Mail.Subject = Mail.EncodeHeader («Emoji Test:» + ChrW (& HD83D) & ChrW (& HDE02) & ChrW (& HD83C) & ChrW (& HDF39), «utf-8»)
…
6.5 Допустимые значения CharSet
Вы можете указать следующие строковые значения для свойства CharSet , а также второй необязательный аргумент метода EncodeHeader :
Значение Значение «УТФ-8» UTF-8 «УТФ-7» UTF-7 «Окна-1250»
«cp1250»ANSI — Центральная Европа «Окна-1251»
«cp1251»ANSI — кириллица «Windows-1252»
«cp1252»
«ascii»
«us-ascii»Латиница I «Окна-1253»
«cp1253»ANSI — греческий «Окна-1254»
«cp1254»ANSI — турецкий «Окна-1255»
«cp1255»ANSI — иврит «Окна-1256»
«cp1256»ANSI — арабский «Окна-1257»
«cp1257»ANSI — Балтика «Окна-1258»
«cp1258»ANSI — вьетнамский «ИСО-8859-1» Latin I (значение по умолчанию) «ИСО-8859-2» Центральная Европа «ИСО-8859-3» Латиница 3 «ИСО-8859-4» Балтика «ИСО-8859-5» Кириллица «ИСО-8859-6» Арабский «ИСО-8859-7» Греческий «ISO-8859-8» Еврейский «ИСО-8859-9» Латиница 5 «ИСО-8859-15» Латиница 9 «cp866» Русский DOS «КОИ8-Р» Русский «КОИ8-У» Украинский «shift_jis» Японская Windows «ks_c_5601-1987»
«корейский»Корейский «EUC-KR»
«корейский»EUC — корейский «БОЛЬШОЙ5» Традиционный китайский Windows «GB2312»
«китайский»Китайский упрощенный «HZ-GB-2312» Упрощенный китайский HZ «EUC-JP» EUC — японский «X-EUC-TW» EUC — традиционный китайский
Установить набор символов по умолчанию для открытия существующих файлов
Здравствуйте, @ Friemen-yellow,
У вас, наверное, включена кодировка auto -detection .Я советую вам отключить эту функцию ( Настройки> Предпочтения…> MISC> Автоопределение кодировки символов ). Итак, при открытии файла с кодировкой Cyrillic , N ++ должен использовать стандартную кодировку ANSI …
И, поскольку ваш набор символов по умолчанию , для файлов NON -Unicode, конечно же, Windows-1251 , вы должны немедленно увидеть правильные символы кириллицы , которые вы ожидаете :-))
Чтобы проверить конфигурацию кодировки по умолчанию, для файлов без Unicode просто откройте панель вставки ASCII ( Правка> Панель символов ).Для Windows-1251 , символов кириллицы в верхнем регистре находятся между значениями кода 192 и 223 , а символы в нижнем регистре кириллицы находятся между значениями кода 224 и 255 .
И если вы измените кодировку по умолчанию ANSI на кодировку Windows-1251 ( Кодировка> Наборы символов> Кириллица> Windows-1251 ), список на панели вставки ASCII будет обновлен, но останется без изменений !
Для быстрого перехода на кодировку Windows-1251 можно также использовать ярлык.Выберите пункт меню «Настройки »> «Сопоставитель ярлыков…»> «Главное меню»> «Windows-1251 » (строка 213
). Я лично выбрал ярлык Crtl + Alt + E . К сожалению, есть небольшая ошибка , так как ярлык описание перезаписывает зону кодирования в правой части строки состояния ! Итак, новая текущая кодировка , как правило, невозможно отличить : — ((
С уважением,
парень038
PS :
Кроме того, если вы используете параметр Настройки> Настройки> Резервное копирование> Запомнить текущий сеанс для следующего запуска , кодировка Windows-1251 ваших открытых файлов Cyillic должна быть сохраненных , от одного сеанса до следующий , так как это , ясно, что закодирован в сеансе .xml файл конфигурации ( encoding = «1251» ), если, конечно, вы закрыли эти файлы , а не , перед закрытием N ++
Справка для файла ANSI
Привет, @ alan-kilborn и Все ,
Ну Алан , думаю проблема и есть реальный баг !
Во-первых, я полагаю, что в вашем Настройки> Настройки ...> Новый документ> Кодировка
:
И в Настройки> Настройки...> Новый документ> РАЗНОЕ.
:
- Кодировка символов
Autodetect
опция UNCHECKED
Примечание Алан , это тоже моя собственная конфигурация !
Теперь предположим, что вы открыли новый файл N ++ => Итак, в строке состояния отображается кодировка UTF-8
: логическая !
Теперь просто напишите строку ABCD , сохраните этот новый файл как Test.txt
и закройте Блокнот ++
При открытии этого файла любой редактор, без любого другого указания, не может сказать, какая у него правая кодировка:
Его можно закодировать с помощью четырех байтов
41424344
в файлеANSI
(так что любая кодировка Windows какWin-1252
,Win-1251
, потому чтоASCII
часть, от00
до7F
это идентичноОн также может быть закодирован с помощью четырех байтов
41424344
в файле N ++UTF-8
(так что безBOM
).Действительно, с кодировкойUTF-8
любой символ с кодовой точкой под\ x {0080}
кодируется только с помощью1
байтов, от00
до7F
Но, поскольку у нас есть настройка Применить к открытым файлам ANSI
установить , когда вы повторно -открываете файл Test.txt
, вы снова должны увидеть UTF-8
индикация в статусе бар
И, добавление символа SOH ( \ x {01}
) или любого символа до \ x {1F}
(я проверил), между AB и CD не изменится что-нибудь.Кодировка останется UTF-8
!
Но добавление символа NUL изменение приводит к тому, что изменяет кодировку как ANSI
, что находится в противоречии с нашими пользовательскими настройками ! Однако этот конкретный случай ( NUL char + чистый ASCII
символов, только ) на самом деле не имеет значения, поскольку текущий файл содержимого не , а изменяется при переключении с ANSI на UTF-8
и наоборот!
Что еще больше раздражает , так это то, что наличие символа NUL по-прежнему вызывает кодировку ANSI
, , даже если символ, с кодом поверх \ x {007F}
, это , добавленное в файл : — ((Например, если вы добавите очень распространенный французский char é
, чтобы получить строку AB
NUL CDé
и сохраните этот файл с UTF-8
кодировка, когда вы повторно -открываете этот файл, кодировка ошибочно изменена на ANSI
.Итак, отображается неправильная строка AB
NUL CDÃ ©
!
Помните, что содержимое файла Test.txt
, строка AB
NUL CDé
, после сохранения будет 4142004344C3A9
с кодировкой UTF-8
9349 , будет закодирован 4142004344E9
в файле ANSI
)
Итак, хотя файлы с NUL символов являются , а не обычными в классических текстовых файлах , я полагаю, что эта ошибка требует создания проблемы .Что вы думаете об этом?
С уважением,
парень038
linux — Пакетное преобразование кодировки в файлы
Cygwin или GnuWin32 предоставляют инструменты Unix, такие как iconv
и dos2unix
(и unix2dos
). В Unix / Linux / Cygwin вы захотите использовать «windows-1252» в качестве кодировки вместо ANSI (см. Ниже). (Если вы не знаете, что ваша система использует кодовую страницу, отличную от 1252, в качестве кодовой страницы по умолчанию, и в этом случае вам нужно указать iconv правильную кодовую страницу для перевода.)
Преобразовать из одного ( -f
) в другой ( -t
) с помощью:
$ iconv -f windows-1252 -t utf-8 infile> Outfile
Или в форме «найди все и победи»:
## это приведет к затиранию исходных файлов!
$ найти. -name '* .txt' -exec iconv --verbose -f windows-1252 -t utf-8 {} \> {} \;
Альтернативно:
## это приведет к затиранию исходных файлов!
$ найти. -name '* .txt' -exec iconv --verbose -f windows-1252 -t utf-8 -o {} {} \;
Этот вопрос задавали много раз на этом сайте, так что вот некоторая дополнительная информация об «ANSI».В ответе на связанный с этим вопрос CesarB упоминает:
Есть несколько кодировок, которые в Windows называются «ANSI». На самом деле ANSI — неправильное название. iconv не может угадать, что вы хотите.
Кодировка ANSI — это кодировка, используемая функциями «A» в Windows API (функции «W» используют UTF-16). Какой кодировке он соответствует, обычно зависит от языка вашей системы Windows. Наиболее распространенным является CP 1252 (также известный как Windows-1252). Итак, когда ваш редактор говорит ANSI, это означает «все, что функции API используют в качестве кодировки ANSI по умолчанию», которая является кодировкой по умолчанию, отличной от Unicode, используемой в вашей системе (и, следовательно, обычно той, которая используется для текстовых файлов).
Страница, на которую он ссылается, дает этот исторический лакомый кусочек (цитируется из Microsoft PDF) о происхождении CP 1252 и ISO-8859-1, другой часто используемой кодировки:
.[…] это происходит из-за того, что кодовая страница Windows 1252 изначально была основана на проекте ANSI, который стал стандартом ISO 8859-1. Однако при добавлении кодовых точек к диапазону, зарезервированному для управляющих кодов в стандарте ISO, кодовая страница Windows 1252 и последующие кодовые страницы Windows, изначально основанные на серии ISO 8859-x, отклонялись от ISO.По сей день нередки случаи, когда сообщество разработчиков как внутри, так и за пределами Microsoft путает кодовую страницу 8859-1 с Windows 1252, а также видит «ANSI» или «A», используемые для обозначения поддержки кодовой страницы Windows. .