Показать сообщение отдельно
  #8 (permalink)  
Старый 31.07.2013, 02:54
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Внутреннее представление строк не имеет отношения к этой проблеме.
У тебя в документе на каждый символ приходится два байта (так как символы кириллицы в utf8 кодируются именно двумя байтами). Но так как браузер не вкурсе что документ в utf8 (чтобы был вкурсе, нужен либо http заголовок Content-Type, либо его эквивалент в html - <meta http-equiv=Content-type> либо тег <meta charset=..>), то он интерпретирует его как cp1251. А это однобайтовая кодировка, поэтому каждый из двух байт utf8 символа интерпретируется как отдельный символ cp1251.

Почему не 16 (8*2), а 14? Потому что символы пробела и запятой в utf8 кодируются одним байтом (как и остальные ascii-символы)
Ответить с цитированием