|
|
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
есть файл в непонятной кодировке - блонот показывает нормальный текст только шрифтом terminal. читаю этот файл так Код: java 1. 2. 3. 4. 5. 6. 7. записываю так Код: java 1. 2. 3. 4. 5. блокнот читает новый файл нормально, размер файла остался прежним. т.е. однобайтовая кодировка. как получить UTF-8 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 16:07 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
По умолчанию писатель использует системную кодировку, которая (в данном конкретном случае) - windows-1251. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 16:11 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
1. Приаттач файл. 2. FileReader, Files и прочие API почему не используем? Куча кода для задачи, которая со всякими Apache Commons решается в один метод. 3. UTF-8 это однобайтовая кодировка в ASCII диапазоне. Откуда уверенность что FileWriter по-умолчанию будет писать именно в ней? Блин, первым же тыком: https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/FileUtils.html Один метод на чтение, другой на запись. Всё! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 16:17 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, с записанным понятно. в какой кодировке sss ? если java использует по умолчанию utf-8 , то и sss должна быть уже в utf-8 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 16:19 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
Blazkowicz2. FileReader, Files и прочие API почему не используем? Куча кода для задачи, которая со всякими Apache Commons решается в один метод. нерепробовал кучу методов, но получилась фигня.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 16:21 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
вадянерепробовал очепятка - перепробовал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 16:35 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
вадяесли java использует по умолчанию utf-8 Java не использует по-умолчанию utf-8. Откуда это заблуждение - вопрос открытый. вадя, то и sss должна быть уже в utf-8 ? Строка не имеет кодировки. Это основное заблуждение обнажающее непонимание "кодировок". Строка, с точки зрения Java, это текст. У текста нет кодировок. Кодировка это представление текста в байтах. Поэтому она важна при чтении и записи файлов. Представление строки в виде какой-либо кодировки в оперативной памяти отношения к пробелеме не имеет, поэтому его приплетать не нужно. Хотя многие этим злоупотребляют. Кодировка по-умолчанию находится в системном свойстве file.encoding. Как уже верно заметили выше, под русской виндой, это, обычно, cp1251. Можно запустить программу с параметром -Dfile.encoding=UTF-8 и получить другой файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 16:39 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
вадянерепробовал кучу методов, но получилась фигня.. Код: java 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 16:41 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
BlazkowiczСтрока не имеет кодировки. Это основное заблуждение обнажающее непонимание "кодировок". длина строки из 10символов - 10 или 20 байт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 17:31 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
вадяесли java использует по умолчанию utf-8Откуда ж вы такие берётесь ... Текущая реализация строк - массив char-ов. Со всякими выкрутасами в виде модифицированного UTF 16 и прозрачным преобразованием во "внешнюю" кодировку. UTF16 потому, что char , модифицированная - для обратной совместимости с версиями, использовавшими только BMP. Умолчание "внешней" кодировки зависит не только от системы, но и от разработчика. IBM J9, например, раздельно отслеживает "файловую" и "консольную" кодировки. В последних Oracle JRE есть похожий механизм, но реализован иначе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 17:35 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
вадядлина строки из 10символов - 10 или 20 байт? Длина строки - 10 символов. Количество байт зависит от кодировки, самих символов и то что именно мы называем символом. Рекомендую к изучению: https://docs.oracle.com/javase/8/docs/api/java/lang/Character.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 17:40 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
вадя, для русского языка объективно существуют пара-тройка кодировок которые могут быть использованы. Это win-1251, koi8-r, cp866. Это - однобайтные. Их легко глазом увидеть если открыть в hex-редакторе. Тоесть вариантов как-бе не очень много. (кстати я в скобках замечу что наличие hex-редактора на рабочем столе подчеркивает уровень seniority) Многобайтные (их немного) utf-16 видны в hex-редакторе как ярко выраженные чередования полос нулей 00 и кодов латиницы. А для русских букв коды будут соотв в диапазоне и будут перекрывать пару байтов. Для плавающих кодировок типа utf-8 латиница видна без изменений, а кириллица соотв раздвигается до 2х байтов с префиксным кодированием. Прочие многобайтные типа utf-32 где-то существуют в галлактике но это экзотика. Сущетсвует также протокол передачи т.н. BOM-заголовка перед текстовым файлом который может быть маркером многобайтной кодировки но ЕМНИП он не обязательно соблюдается редакторами. Догадываюсь что сейчас в топик набегут знатоки кодовых точек и расширенных кодировок Unicode но тот базовый набор знаний который нужен для повседневной работы я уже дал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 17:42 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovОткуда ж вы такие берётесь ... дак от туда, что нет четкой трактовки. char - сколько байт? если я так читаю String text = FileUtils.readFileToString(file, "cp866"); что из себя представляет каждый символ из text? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 17:45 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
maytonно тот базовый набор знаний который нужен для повседневной работы я уже дал.База повседневной работы - документация о способах задания кодировок при вводе-выводе, включая преобразования String <-> byte[]. То, что вы "дали" лучше вообще не знать - неполные знания могут быть хуже отсутствующих. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 17:50 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
вадяchar - сколько байт? если я так читаю String text = FileUtils.readFileToString(file, "cp866"); что из себя представляет каждый символ из text? В середине 20-го века (на заре кибернетики) char действительно был байтом (8 bit). В парадигме Java char по сути является синонимом 16-битного целого числа. Тоесть маппинг уже невозможен. Текстовый (*.txt) файл который лежит на диске изначально не имеет никакой кодировки. Детектирование его кодировки - это наша головная боль. Опять-же это все наследие 20-го века. Вот если взять xml - то его спека однозначно и жестко определяет хедер где есть encoding="" и символьное стандартное описание семантики байтов которые лежат сразу после хедера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 17:51 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
вадяchar - сколько байт?Написано в любом учебнике - 16 бит. Фиксировано, как и любой примитивный тип Java.если я так читаю String text = FileUtils.readFileToString(file, "cp866"); что из себя представляет каждый символ из text?Неизвестно, т.к. String - базовый (и обязательный) тип Java SE API. "Без объявления войны" его реализацию, конечно не поменяют, но если изменят - вы об этом можете и не узнать. Кодировка есть у байтов, которые читаются/пишутся из/в потоки ввода/вывода. Именно кодировка позволяет интерпретировать последовательность байт тем или иным способом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 17:55 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
maytonВот если взять xml - то его спека однозначно и жестко определяет хедерДа неужели? Допустим, что никто ничего не накосячил. Вы знаете способ без ошибок прочитать заголовок xml-файл с кодировкой UTF16LE/UTF16BE? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 17:58 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
mayton, вот уже идут разночтения maytonЭто win-1251, koi8-r, cp866. Это - однобайтные. Blazkowicz3. UTF-8 это однобайтовая кодировка в ASCII диапазоне. mayton пропустили кодировку или Blazkowicz ошибся? maytonДля плавающих кодировок типа utf-8 латиница видна без изменений, а кириллица соотв раздвигается до 2х байтов с префиксным кодированием. BlazkowiczСтрока, с точки зрения Java, это текст. У текста нет кодировок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 17:59 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
вадявот уже идут разночтения Или просто кто-то не внимательно читает. Разночтений нет. Одно и то же разными словами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 18:03 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
вадявот уже идут разночтенияНет никаких разночтений - в диапазоне кодов от 1 до 127 (US-ASCII) UTF8 кодирует каждый символ одним байтом. Составных символов в US-ASCII нет, поэтому US-ASCII == UTF8. Но не наоборот :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 18:05 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovНеизвестно, т.к. String - базовый (и обязательный) тип Java SE API. поэтому и возникают вопросы . maytonТекстовый (*.txt) файл который лежит на диске изначально не имеет никакой кодировки. согласен. отсюда вопрос - как эти байты отображать ? вот такой таким 20543921 , блокнот читает и понимает нормально. если смотреть в hex - просто произошла подмена значений байтов. кодировка ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 18:07 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovНет никаких разночтений - в диапазоне кодов от 1 до 127 (US-ASCII) UTF8 кодирует каждый символ одним байтом. Составных символов в US-ASCII нет, поэтому US-ASCII == UTF8. Но не наоборот :) вопрос авторесли Неизвестно, т.к. String - базовый (и обязательный) тип Java SE API. что будет если я в строке прочитанной таким образом Код: java 1. 2. 3. 4. 5. 6. 7. начну искаить , к примеру , строку , набранную в ide-кудакторе , лалалал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 18:13 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
вадяmaytonТекстовый (*.txt) файл который лежит на диске изначально не имеет никакой кодировки.согласен.А зря. Виндовый блокнот умеет ANSI, UTF16BOM, UTF8BOM. Не очень понимаю, что мешало добавить ещё и OEM, но факт остаётся фактом - текст представляется последовательностью байт в разной кодировке.отсюда вопрос - как эти байты отображать ?По ситуации. Если кодировка дана извне - просто читаем доку. Если кодировка неизвестна - ищем алгоритм(ы) определения кодировок для конкретного языка или языков. Ну или кидаем исключения/спрашиваем пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 18:15 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
вадяначну искаить , к примеру , строку , набранную в ide-кудакторе , лалалалЗависит от настроек редактора, но шанс, что это будет CP866 - практически нулевой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 18:17 |
|
||
|
Про кодировку из cp866 в utf8
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovВиндовый блокнот умеет ANSI, UTF16BOM, UTF8BOM. Не очень понимаю, что мешало добавить ещё и OEM, он и OEM может отобразить - если выставить шрифт terminal. Basil A. SidorovЕсли кодировка неизвестна - ищем алгоритм(ы) определения кодировок для конкретного языка или языков. Ну или кидаем исключения/спрашиваем пользователя. вот и и спрашиваю... круг замкнулся.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2017, 18:19 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39467141&tid=2122862]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
86ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 390ms |

| 0 / 0 |
