C русская кодировка: Локализация и кириллица в консоли

c++ — Русская строка в C

Как получается что русские символы умещаются в C строке в кодировке UTF-8 когда каждый русский символ в этой кодировке занимает 2 байта, а ячейка в C строке вмещает только 1 байт? Почему если выводить эту строку, то она выведется без проблем, а если выводить её посимвольно, то она выводит ошибки? Ещё если можно, то посоветуйте материалов почитать по этой теме.

char a[] = "Строка";
std::cout << a << std::endl;
for (int i = 0; i < 6; i++)
std::cout << a[i] << std::endl;

1

Чудес не бывает — символы, занимающие больше одного байта в Си так же занимают больше одного байта. В случае со строкой char они лежат в нескольких ячейках (в случае с двухбайтными — первый символ лежит в первых двух, второй — во вторых двух).

Если говорить о C++, то для многобайтных символов есть специальный тип wchar_t

, который имеет размер в 4 байта для GNU/Linux и 2 байта для Windows API

Аналогом std::string для этого типа является std::wstring.

http://en.cppreference.com/w/cpp/string/basic_string


// сперва считаем символ беззнаковым, потом переводим его в целое число
char a[] = "Строка";
std::cout << (int)(unsigned char)a[0] << "; " << (int)(unsigned char)a[1] << std::endl;

Выведет 208; 161 (https://ideone.com/FyUdhj)

Согласно вот это (https://unicode-table.com/ru/0421/) таблице, символ С в UTF-8 представляется двумя байтами, как раз 208 161

7

Ячейка в С-строке вмещает, конечно, один байт, но каждый символ в таком случае будет занимать в ней два места. И длина всей строки — 12

char a[] = "Строка";
std::cout << a << ' ' << strlen(a) << std::endl; // Строка 12

Например, если вывести из этой строки по два символа, то выведутся правильные символы:

for (int i = 0; i < 6; i++)
    std::cout << a[2*i] << a[2*i+1] << std::endl;

utf-8 — мультибайтовая кодировка (разные символы могут занимать разное количество байт). В том числе кириллические символы будут занимать два байта. При инициализации строки каждый по два байта и займёт.
Следующие две конструкции с точки зрения языка эквивалентны:

char a[] = "\xd0\xa1\xd1\x82\xd1\x80\xd0\xbe\xd0\xba\xd0\xb0";
char a[] = "Строка";

3

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

Как научить Python русскому языку — Учимся с Python

Специфика работы в Python со строками на русском языке проистекает из того, что существует множество независимых кодировок для представления на компьютере букв, отличных от латинских.

и &. Введенные вами с клавиатуры символы хранятся в памяти компьютера в виде чисел. Потому что ничего, кроме чисел, в компьютере не может храниться.

Поэтому каждый символ, отображаемый или принимаемый компьютером, кодируется некоторым числом. Ниже представлена таблица кодировки ASCII, которая использует числа от 0 до 127 для кодирования символов, включая латиницу (буквы латинского алфавита), цифры от 0 до 9, знаки пунктуации и специальные символы. Кроме того, коды от 0 до 31 кодируют специальные управляющие символы, такие как табуляция TAB, перевод строки LF и другие. Подробнее познакомиться с таблицей ASCII можно в Википедии.

0
NULL
32Space64@96`
1SOH33!65A97a
2STX3466B98b
3ETX35#67C99c
4EOT36$68D100d
5ENQ37%69E101e
6ACK38&70F102f
7BEL3971G103g
8BS40(72H104h
9TAB41)73I105 i
10LF42*74J106j
11VT43+75K107k
12FF44,76L108l
13CR4577M109m
14SO46.78N110n
15SI47/79O111o
16DLE48080P112p
17DC149181Q113q
18DC2502
82
R114r
19DC351383S115s
20DC452484T116t
21NAK53585U117u
22SYN54686V118v
23ETB55787W119w
24CAN56888X120x
25EM57989Y121y
26SUB58:90Z122z
27ESC59;91[123{
28
FS
60<92124|
29GS61=93]125}
30RS62>94^126~
31US63?95_127DEL

Все современные компьютеры и программы понимают и широко используют кодировку ASCII. Вот почему латиница является самым распространенным алфавитом на компьютерах, а англоязычные пользователи компьютеров, по большей части, лишены необходимости задумываться о кодировках символов и переключать раскладку клавиатуры.

Закодируем, используя приведенную выше таблицу кодов ASCII, слово “Hello”. Мы получим следующую последовательностью числовых кодов: 72, 101, 108, 108, 111. Проверить (и узнать) соответствие букв и кодов можно при помощи встроенных функций Python chr и ord. Функция chr принимает в качестве аргумента целочисленный код и возвращает соответствующий ему символ. Функция ord, наоборот, принимает символ и возвращает кодирующее его целое число:

>>> ord('H')
72
>>> ord('e')
101
>>> chr(101)
'e'
>>> type(chr(101))
<type 'str'>
>>>

Посмотрите еще раз на таблицу ASCII. Как видите, в ней нет букв русского алфавита. А также в ней греческих, арабских, японских и других букв и иероглифов, использующихся в разных языках Земли. Для кодирования букв и других символов, отсутствующих в таблице ASCII, используются числа больше 128. На следующем рисунке представлена кодировка cp866, использующая числа от 128 до 255 для кодирования символов кириллицы (букв русского алфавита) и специальных графических символов.

128А160а192224р
129Б161б193225с
130В162в194226т
131Г163г195227у
132Д164д196228ф
133Е165е197229х
134Ж166ж198230ц
135З167з199231ч
136И168и200232ш
137Й169й201233щ
138К170к202234ъ
139Л171л203235ы
140М172м204236ь
141Н173н205237э
142О174о206238ю
143П175п207239я
144Р176208240Ё
145С177209241ё
146Т178210242Є
147У179211243є
148Ф180212244Ї
149Х181213245ї
150Ц182214246Ў
151Ч183215247ў
152Ш184216248°
153Щ185217249
154Ъ186218250·
155Ы187219251
156Ь188220252
157Э189221253¤
158Ю190222254
159Я191223255 

Кодировка cp866 использовалась в операционной системе MS DOS и теперь по умолчанию используется в консоли MS Windows. Буквы cp в названии этой и других кодировок — сокращение от code page (англ.: кодовая страница).

Случилось так, что числа от 128 до 255 стали использоваться в разных странах для кодирования букв алфавитов разных языков, а не только русского. Но даже если вести речь только о кириллице, то, кроме кодировки cp866, существуют несколько других кодировок, которые иначе сопоставляют буквы кириллицы кодам в диапазоне от 128 до 255. В качестве примера еще одной кириллической кодировки ниже приведена таблица кодов cp1251, используемая графическими приложениями в ОС MS Windows, такими как Блокнот, MS Office и другими.

128Ђ160 192А224а
129Ѓ161Ў193Б225б
130162ў194В226в
131ѓ163Ј195Г227г
132164¤196Д228д
133165Ґ197Е229е
134166¦198Ж230ж
135167§199З231з
136168Ё200И232и
137169©201Й233й
138Љ170Є202К234к
139171«203Л235л
140Њ172¬204М236м
141Ќ173­205Н237н
142Ћ174®206О238о
143Џ175Ї207П239п
144ђ176°208Р240р
145177±209С241с
146178І210Т242т
147179і211У243у
148180ґ212Ф244ф
149181µ213Х245х
150182214Ц246ц
151183·215Ч247ч
152˜184ё216Ш248ш
153185217Щ249щ
154љ186є218Ъ250ъ
155187»219Ы251ы
156њ188ј220Ь252ь
157ќ189Ѕ221Э253э
158ћ190ѕ222Ю254ю
159џ191ї223Я255я

Из сказанного можно сделать вывод о том, что для правильного отображения символов на экране компьютеру необходимо знать, в какой кодировке представлены данные, которые нужно отобразить. Например, пускай нам дана следующая последовательность кодов: 232, 227, 226. Если принять, что это символы, представленные в кодировке cp866, то мы получим слово “шут”. А если принять, что это символы, представленные в кодировке cp1251, то мы получим слово “игв”. А в греческой кодировке cp1253 эти же коды дадут нам “θγβ”! На сегодняшний день существуют десятки кодировок, сопоставляющих числовые коды от 128 до 255 различным символам!

Если вы запускаете интерпретатор Python в консоли русскоязычной Windows, то Python ожидает, что строки используют кодировку cp866. Давайте проведем небольшое исследование для того, чтобы подтвердить или опровергнуть это утверждение. Воспользуемся функцией ord для получения числовых кодов нескольких русских букв, введенных с клавиатуры, и таблицей кодов cp866, приведенной выше, чтобы убедиться, что функция ord вернула нам коды букв в кодировке cp866:

>>> print ord('э'), ord('ю'), ord('я')
237 238 239
>>>

А функция chr выведет буквы русского алфавита, соответствующие кодам, взятым нами из таблицы cp866:

>>> print chr(128), chr(129), chr(130)
А Б В
>>>

Итак, русские буквы, которые мы вводим с клавиатуры при работе в интерактивном режиме Python, представлены в кодировке cp866. Работая в интерактивном режиме Python, мы можем смело использовать русские буквы в строковых значениях:

>>> name = 'мир'
>>> print 'Привет', name
Привет мир
>>>

Таким образом, все примеры работы в интерактивном режиме, приведенные в книге, можно безболезненно русифицировать, заменяя английские слова и предложения на русские.

Однако, для русификации скриптов Python, сохраненных в файлах, нам осталось сделать еще один шаг. Нам нужно ответить на вопрос, в какой кодировке сохранен наш скрипт в файле? Это зависит от текстового редактора, в котором был написан и сохранен скрипт, и от того, была ли явно указана кодировка при сохранении файла.

Как было сказано выше, Блокнот, или Notepad, простой текстовый редактор, имеющийся в ОС Windows, использует кириллическую кодировку cp1251, а консоль Windows, или окно для работы с командной строкой, по умолчанию использует кириллическую кодировку cp866. Это очень неудобно для русскоязычных пользователей.

Например, создайте в Блокноте файл C:\russian.txt с единственной строкой:

Привет мир!

А теперь откройте окно с командной строкой и выведите содержимое этого файла на экран:

C:\>type russian.txt
╧ЁштхЄ ьшЁ!

Что это за кракозябры?

Если вы отыщете эти символы, один за одним, в приведенной выше таблице кодов cp866, то получится последовательность кодов: 207, 240, 232, 226, 229, 242, 32, 252, 248, 240, 33. (Пробел и восклицательный знак имеют коды из диапазона 0 — 127 и кодируются таблицей ASCII.) Теперь переведите эти коды в символы, используя таблицу кодировки cp1251, и вы получите “Привет мир!” Кракозябры в консольном окне мы видим потому, что Блокнот сохранил файл в кодировке cp1251, а консольное окно считает, что коды от 128 до 255 представляют символы из кодировки cp866!

Преодолеть эту проблему можно с помощью консольной команды chcp. Команда chcp без параметров показывает, какая кодировка является текущей:

C:\>chcp
Active code page: 866

А в качестве параметра команда chcp принимает номер кодировки, которую необходимо сделать текущей. Если с ее помощью изменить текущую кодировку консольного окна на cp1251, то мы, наконец, сможем увидеть содержимое файла russian.txt неискаженным:

C:\>chcp 1251
Active code page: 1251
C:\>type russian.txt
Привет мир!

Скрипт на Python является текстовым файлом точно так же, как файл russian.txt, с которым мы экспериментировали. И если создать и сохранить скрипт, использующий русские буквы, в Блокноте, то скрипт будет сохранен в кодировке cp1251. Давайте откроем в Блокноте файл russian.txt и сохраним его как russian.py, слегка изменив его содержимое:

print 'Привет мир!'

Теперь это файл с очень простым скриптом на языке Python. Выполним его:

C:\>python russian.py
  File "russian.py", line 1
SyntaxError: Non-ASCII character '\xcf' in file russian.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

Вместо ожидаемого приветствия на русском языке Python вывел сообщение об ошибке. Сообщение говорит о том, что в 1-ой строке файла встретился символ, не являющийся символом ASCII, а кодировка не объявлена. Очевидно, что символы, не являющиеся символами ASCII, в нашем файле — это русские буквы. Но что же в этом плохого?

Дело в том, что Python по умолчанию ожидает, что скрипты, переданные ему для выполнения, имеют кодировку ASCII, то есть, содержат символы с кодами в диапазоне 0 — 127. Для всех, кто использует в своих скриптах только латиницу, цифры и другие символы ASCII, это работает прекрасно. Пользователи, использующие в своих программах строковые значения и комментарии на английском языке, чувствуют себя совершенно комфортно в этой ситуации и, по большей части, не подозревают о проблеме, с которой мы только что столкнулись.

Чтобы сообщить Python о том, что скрипт использует кодировку, отличную от ASCII, нужно в начале файла поместить комментарий специального вида, содержащий информацию о кодировке файла. Для скрипта russian.py, созданного в Блокноте, укажем кодировку cp1251, после чего скрипт будет выглядеть так:

# -*- coding: cp1251 -*-
print 'Привет мир!'

После этого сможем успешно выполнить скрипт в консольном окне Windows (только не забудьте установить текущую кодировку командой chcp 1251):

C:\>chcp 1251
Active code page: 1251
C:\>python russian. py
Привет мир!

Итак, для того, чтобы скрипт Python заговорил по-русски в консольном окне Windows, необходимо:

  1. Указать в начале скрипта кодировку, которую использует файл. Например:

    # -*- coding: cp1251 -*-
    
  2. Установить в консольном окне Windows кодировку, которую использует выполняемый скрипт. Например:

    C:\> chcp 1251
    Active code page: 1251

В общем случае, скрипт с русскими строками и комментариями может использовать любую из кириллических кодировок, в частности, любую из рассмотренных выше, cp1251 или cp866. Важно, чтобы объявленная в начале файла кодировка была та самая, в которой сохранен файл.

Если скрипт использует кодировку cp866, то в консольном окне русскоязычной Windows не нужно предпринимать никаких специальных действий перед выполнением скрипта, ведь cp866 — кодировка, установленная в консоли по умолчанию. Но если скрипт использует кодировку cp1251, то перед его выполнением в консоли нужно установить текущую кодировку командой chcp 1251.

Таблица

Ascii для кириллической кодировки (CP866)

Американский стандартный код для обмена информацией ( ASCII ) — широко используемая система кодировки символов , представленная в 1963 году. стандартный набор символов изначально состоял из 128 символов (7-битный код). Первые 32 символа — это управляющие символы (также называемые непечатаемыми символами), которые используются для управления потоками данных, а также такими устройствами, как принтеры. Позже он был расширен для поддержки 256 символов (8-битный код), чтобы предоставить символы, специфичные для языка, различные символы, а также символы для рисования блоков: элементы, используемые для презентационных целей, позволяющие рисовать различные виды фреймов и блоков. Символы в диапазоне 128-255 называются расширенным ASCII.

Кодовая страница 866 является наиболее широко используемой кодовой страницей для написания языков на основе кириллицы: белорусского, боснийского, болгарского, македонского, русского, сербского, украинского (славянские языки), а также казахского, киргизского, молдавского, монгольского, таджикского, Узбекский (неславянский), кодовая страница 855 является альтернативной. Только расширенный набор символов отличается от исходной кодовой страницы, причем как управляющие символы, так и стандартный набор символов представляют собой простой ASCII.

В приведенной ниже таблице символов показано графическое представление каждого символа с точностью до пикселя, а также текстовое описание.

Control characters (0 — 31):

Dec Hex Char Description Dec Hex Char Description
0 0 NUL (Null ) 16 10 DLE (Data Link Escape)
1 1 SOH (Start of Header) 17 11 DC1 (Device Control 1)
2 2 STX (Start of Text) 18 12 DC2 (Device Control 2)
3 3 ETX (End of Text) 19 13 DC3 (Device Control 3)
4 4 EOT (End of Transmission) 20 14 DC4 (Device Control 4)
5 5 ENQ (Enquiry) 21 15 NAK (Negative Acknowledge)
6 6 ACK (Acknowledge) 22 16 SYN (Synchronous Idle)
7 7 BEL (Bell) 23 17 ETB (End of Transmission Block)
8 8 BS (BackSpace) 24 18 CAN (Cancel)
9 9 HT (Horizontal Tabulation) 25 19 EM (End of Medium)
10 A LF (Line Feed) 26 1A SUB (Substitute)
11 B VT (Vertical Tabulation) 27 1B ESC (Escape)
12 C FF (Form Feed) 28 1C FS (File Separator)
13 D CR (Carriage Return) 29 1D GS (Group Separator)
14 E SO (Shift Out) 30 1E RS (Record Сепаратор)
15 F SI (Shift in) 31 1F США (единица разделителя)

Стандарт.

Hex Char Description Dec Hex Char Description 32 20 Space 80 50 Upper case P 33 21 Exclamation mark 81 51 Upper case Q 34 22 Quotation Mark 82 52 Upper case R 35 23 Hash 83 53 Upper case S 36 24 Dollar 84 54 Upper case T 37 25 Percent 85 55 Upper case U 38 26 Ampersand 86 56 Верхний корпус V 39 27 Апостроф 87 57 47 574775. 0023 40 28 Open bracket 88 58 Upper case X 41 29 Close bracket 89 59 Upper case Y 42 2A Asterisk 90 5A Upper case Z 43 2B Plus 91 5B Open square bracket 44 2C Comma 92 5C Backslash 45 2D Dash 93 5D Квадратная кронштейна закрытия 46 2E Полная остановка 94 5E Кэтрит9023 479

024 2F

Slash 95 5F Underscore 48 30 Zero 96 60 Grave accent 49 31 One 97 61 Нижний чехол A 50 32 Два 98 6269 29249624. 0025 51 33 Three 99 63 Lower case c 52 34 Four 100 64 Lower case d 53 35 Five 101 65 Lower case e 54 36 Six 102 66 Lower case f 55 37 Seven 103 67 Lower case g 56 38 Eight 104 68 Нижний чехол H 57 39 Девять 105 69

025

Colon 106 6A Lower case j 59 3B Semicolon 107 6B Lower case k 60 3C Менее 108 6C Нижний чехол L 61 3D0024 Lower case m 62 3E Greater than 110 6E Lower case n 63 3F Question mark 111 6F Lower case o 64 40 At 112 70 Lower case p 65 41 Upper case A 113 71 Lower case q 66 42 Upper case B 114 72 Lower case r 67 43 Верхний корпус C 115 73. 0024 Lower case t 69 45 Upper case E 117 75 Lower case u 70 46 Upper case F 118 76 Lower case v 71 47 Upper case G 119 77 Lower case w 72 48 Upper case H 120 78 Lower case x 73 49 Upper case I 121 79 Lower case y 74 4A Upper case J 122 7A Lower case z 75 4B Upper case K 123 7B Open brace 76 4C Upper case L 124 7C Pipe 77 4D Upper case M 125 7D Close brace 78 4E Upper case N 126 7E Tilde 79 4F Upper case O 127 7F Delete

Extended character set (128 — 255):

23025 9

4 Box drawings double down and right

50023 904 40023.0025.00250025
Dec Hex Char Description Dec Hex Char Описание
128 80 Cyrillic Верхний корпус A 192 C0 Box Huls Up Up Up и справа
Box Bulting0024 129 81 Cyrillic upper case BE 193 C1 Box drawings light up and horizontal
130 82 Cyrillic upper case VE 194 C2 Чертежи коробки светлая вниз и горизонтальная
131 83 Кириллица прописная GHE 195 C3 Чертеж вертикальная и правая

25

132 84 Cyrillic upper case DE 196 C4 Box drawings light horizontal
133 85 Cyrillic upper case IE 197 C5 Чертежи коробки светлая вертикальная и горизонтальная
134 86 Кириллица заглавная ZHE 198 C6 вертикальная и двойная Правая коробка
135 87 Cyrillic upper case ZE 199 C7 Box drawings vertical double and right single
136 88 Cyrillic upper case I 200 C8 Чертежи боксов двойные вверх и вправо
137 89 Прописная кириллица короткая I 205
138 8A Cyrillic upper case KA 202 CA Box drawings double up and horizontal
139 8B Cyrillic upper case EL 203 CB Чертежи коробок двойные вниз и горизонтальные
140 8C Кириллица заглавная 204 CC Box drawings double vertical and right
141 8D Cyrillic upper case EN 205 CD Box drawings double horizontal
142 8E Заглавная кириллица O 206 CE Чертежи коробки двойные вертикальные и горизонтальные
143 8F60024 Cyrillic upper case PE 207 CF Box drawings up single and horizontal double
144 90 Cyrillic upper case ER 208 D0 Box drawings up double and горизонтальный одинарный
145 91 кириллица заглавная ES 209 D1 двойная рамка 9 одинарная и горизонтальная0025
146 92 Cyrillic upper case TE 210 D2 Box drawings down double and horizontal single
147 93 Cyrillic upper case U 211 D3 Чертежи коробки вверх двойная и правая одинарная
148 94 Кириллица заглавная EF 205 D 6 Box drawings up single and right double
149 95 Cyrillic upper case HA 213 D5 Box drawings down single and right double
150 96 Кириллица заглавная TSE 214 D6 Чертежи внизу двойные и правые одинарные
151 976

5

215 D7 Box drawings vertical double and horizontal single
152 98 Cyrillic upper case SHA 216 D8 Box drawings vertical single and horizontal double
153 99 Кириллица прописная ЩА 217 D9 Рисунки коробки светятся вверх и влево
25 9A Cyrillic upper case hard sign 218 DA Box drawings light down and right
155 9B Cyrillic upper case YERU 219 DB Полный блок
156 9C Цириллический верхний чехол 220 DC Нижняя половина блока
1570025 9D Cyrillic upper case E 221 DD Left half block
158 9E Cyrillic upper case YU 222 DE Right half block
159 9F Cyrillic upper case YA 223 DF Upper half block
160 A0 Cyrillic lower case a 224 E0 Cyrillic lower case er
161 A1 Cyrillic lower case be 225 E1 Cyrillic lower case es
162 A2 Cyrillic lower case ve 226 E2 Cyrillic lower case te
163 A3 Cyrillic lower case ghe 227 E3 Cyrillic lower case u
164 A4 Cyrillic lower case de 228 E4 Cyrillic lower case ef
165 A5 Cyrillic Lower Case, т. Е. 229 E5 Cyrillic Lower Case HA
166 A6
230 E6 Cyrillic lower case tse
167 A7 Cyrillic lower case ze 231 E7 Cyrillic lower case che
168 A8 Нижняя кириллица i 232 E8 Нижняя кириллица sha
169 A9 Нижняя кириллица i60025 233 E9 Cyrillic lower case shcha
170 AA Cyrillic lower case ka 234 EA Cyrillic lower case hard sign
171 AB Cyrillic Lower Case EL 235 EB Cyrillic Lower Case Yeru
172 AC Cyrillic Low Case Em AC Cyrillic EM. 0025 236 EC Cyrillic lower case soft sign
173 AD Cyrillic lower case en 237 ED Cyrillic lower case e
174 AE Cyrillic Lower Case O 238 EE Cyrillic Lower Case Yu
175 AF Cyrill Нижний Case PE0025 239 EF Cyrillic lower case ya
176 B0 Light shade 240 F0 Cyrillic upper case IO
177 B1 Medium shade 241 F1 Cyrillic lower case io
178 B2 Dark shade 242 F2 Cyrillic upper case ukrainian IE
179 B3 Box drawings light vertical 243 F3 Cyrillic lower case ukrainian ie
180 B4 Box drawings light вертикальный и левый 244 F4 Кириллица заглавная YI
181 B5 Двойной вертикальный одинарный и левый0025 245 F5 Cyrillic lower case yi
182 B6 Box drawings vertical double and left single 246 F6 Cyrillic upper case short U
183 B7 Чертежи коробки вниз двойные и левые одинарные 247 F7 Строчная кириллица короткая u
248 909 90 рисунки коробки вниз по одному и левому двойному 248 F8 Знак
186 BA Box Drawings Double Vertical 250 FA Средняя точка
187BB
187BB
187BB
187BB
187 BB
Box drawings double down and left 251 FB ​​ Square root
188 BC Box drawings double up and left 252 FC Numero sign
189 BD рисунки коробки с двойным и левым одиночным 253 FD Валютный знак
190 BE
1904 BE
1904 BE
1904 BE
190 BE
рисунки коробки вверх и слева двойной 254 Fe Черный квадрат
5 Box Blaining пробел

Как сделать, чтобы символы кириллицы отображались корректно?

Tekla Structures

Не зависит от версии

Текла Структурс

Символы кириллицы

Символы русского языка

языковые настройки

Среда

Не зависит от среды

Вопрос:
Как заставить символы кириллицы работать правильно, если у вас не установлен русский язык системы ?
 
Ответ:
В этом руководстве приведены инструкции по правильному отображению символов кириллицы, если в качестве языка операционной системы не установлен русский язык. Это руководство предназначено для операционной системы Windows 7. Для применения этих настроек у вас должны быть права администратора на вашем компьютере, поэтому, если у вас их нет, обратитесь к системному администратору.

Вот так выглядит ваш интерфейс Tekla Structures (Свойства балки и Каталог профилей), если вы используете русскую среду с операционной системой Windows, например на английском (или любом другом языке, не содержащем кириллицы).

 

Изображение

 

Изображение

Для корректной работы:


1. Вы должны изменить системную локаль на русский язык. Это не повлияет на язык интерфейса вашей системы. Как поясняется в справке Windows, «локаль системы определяет набор символов по умолчанию (буквы, символы и цифры) и шрифт, используемый для ввода и отображения информации в программах, не использующих Unicode».

   а. Чтобы изменить, перейдите в Панель управления -> Регион и язык и щелкните вкладку Административная .

 

Изображение


   б. Там нажмите Изменить язык системы… и из выпадающего списка выберите Русский (Россия) .

 

Изображение


   c. После применения настроек вам придется перезагрузить компьютер.
   д. После перезагрузки компьютера символы кириллицы должны правильно отображаться в интерфейсе Tekla Structures, например Свойства балок и каталог профилей.

 

Изображение

 

Изображение


   e. Но в некоторых местах, напр. метки сетки в виде модели или шаблонах компоновки, символы все еще могли отображаться неправильно.

 

Изображение

 

Изображение

2. В этом случае необходимо установить расширенный параметр XS_STD_LOCALE в файле инициализации lang_rus.ini

Перейдите в папку установки Tekla Structures, например C:\Program Files\Tekla Structures\<версия>\nt\bin
   b. Откройте lang_rus.ini с помощью любого текстового редактора и добавьте set XS_STD_LOCALE=russian_us.1251 (или другую строку кодовой страницы символов локали). Дополнительные сведения см. в разделе XS_STD_LOCALE.

 

Изображение

 

   c. Вы не сможете сохранить файл непосредственно в папку установки. Вы должны сохранить измененный файл lang_rus.ini в другом месте, а затем скопировать его в папку установки.
    ум. После применения этого расширенного параметра все символы кириллицы в Tekla Structures будут отображаться правильно.

 

Изображение

 

Изображение

 

Изображение

Начиная с Tekla Structures 21.0 в русской среде есть возможность выбора роли при запуске программы пользователем.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

© 2019 Штирлиц Сеть печатных салонов в Перми

Цифровая печать, цветное и черно-белое копирование документов, сканирование документов, ризография в Перми.