LINUX.ORG.RU

wchar_t

 


3

2

ЧЯДНТ?

$ echo $LANG
en_US.UTF-8

$ gcc --version
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
$ cat src.c 
#include <stdio.h>
#include <wchar.h>
int main ()
{
   wchar_t word[] = L"Дробь";
   wprintf(L"%s\n", word);
   return 0;
}
$ gcc src.c
$
$./a.out
<тут-какойто-непонятный-символ>
★★★★★
Ответ на: комментарий от dzidzitop

Для utf-8 функція len будет давать не то что ожідают

В питоне len учитывает внутреннее представление строки. Внутри питон сам выбирает как хранить строку и как с ней работать.

Если руками задать строку то она сама не нормализуется. Но модуль io при текстовом вводе-выводе включает нормализацию юникода.

true_admin ★★★★★
()
Ответ на: комментарий от dzidzitop

Как ты хочешь чтобы я проверил? Если просто копипастой из браузера то вот:

In [1]: s="ščaście"

In [2]: len(s)
Out[2]: 7

Если вручную разбить строку то вот:

In [9]: s2=unicodedata.normalize('NFD', s)

In [10]: len(s2)
Out[10]: 10

Если NFD записать в файл и считать как текст то будет снова 7 символов ибо магия модуля io.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Спасибо. Тут скорее всего python выбрал UCS-2 для внутреннего представления.

dzidzitop ★★
()
Ответ на: комментарий от thesame

Я про консольку.

Можешь сказать, сколько знакомест занимает символ ударения? И это только русский, с европейскими языками у тебя добавится ещё тонна частных случаев, а с азиатскими  — ещё и обработка широких знакомест (да, xterm вместе с прочими иксовыми терминалами умеют «квадратные» символы").

Никогда не велосипедь работу с юникодом. Есть вполне вменяемые библиотеки, в том числе и юникодные вариации ncurses, если уж захотелось рисовать гуй средствами консоли.

anonymous
()
Ответ на: комментарий от anonymous

Никогда не велосипедь работу с юникодом.

Ой, ну что ты, я не из этих.

thesame ★★★★
()
Ответ на: комментарий от true_admin

Я имел ввиду, что тип символа совпадает с типом строки. А где не так — там пролет.

arturpub ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.