powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
25 сообщений из 88, страница 3 из 4
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39334183
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
llemingЕсли драйвер не использует кодировки зачем тогда в jdbc url явно указывать кодировку клиента?
Драйвер как раз их и использует.
Он преобразует строку из кодировки jvm в кодировку сессии и отправляет СУБД. СУБД преобразует строку из кодировки сессии в кодировку в которой указано хранить. (Хотя возможны ньюансы). Но это для типов данных на которые влияет кодировка сессии. Для тех же BLOBов (и прочих RAW) или для специальных типов, для которых указана альтернативная кодировка нужны специальные указания (или не нужны если просто перекодирования не предполагается а надо хранить как есть в виде байтиков) :)
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39334190
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrei TНету, дубинушка.
Прежде чем с Вами конструктивно разговаривать дайте понятие своему определению "кодировка символов".
Ибо то, что понимают все остальные под этим термином, Вы называете "кодировка байтов".

P.S. И да мы все тут про хранение символов в памяти в виде последовательностей байтов, если походите по ссылкам выше, может прочтете, что иногда JVM это делает по разному и даже указывает как именно в составе типа java.lang.String.
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39334237
Andrei T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевAndrei TНету, дубинушка.
Прежде чем с Вами конструктивно разговаривать дайте понятие своему определению "кодировка символов".
Ибо то, что понимают все остальные под этим термином, Вы называете "кодировка байтов".

P.S. И да мы все тут про хранение символов в памяти в виде последовательностей байтов, если походите по ссылкам выше, может прочтете, что иногда JVM это делает по разному и даже указывает как именно в составе типа java.lang.String.
Про "хранение символов в памяти в виде последовательностей байтов" тут говоришь только ты. Потому что, как я сказал ранее, у тебя приступ словоблудия. Изначальный вопрос, если ты взглянешь на название темы, к вопросу внутреннего устройства конкретной реализации JVM не имеет никакого отношения.
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39334256
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrei TПро "хранение символов в памяти в виде последовательностей байтов" тут говоришь только ты.
Нет. Про это сказал, немного ошибшись в деталях, Леонид. А вот Вы надумали себе что-то про то, что нет никакой кодировки и начали вещать про это. На что Вам и было указано. В главном, что преобразование из кодировки в которой JVM хранит строки в кодировку сеанса связи с СУБД занимается jdbc драйвер никто и не спорил.
Собственно ответ на вопрос TC и заключается в том, чтобы расписать шаги, как из кодировки файла получить строки в кодировке JVM и как их потом отправить в СУБД. Утверждение, что нет никакой кодировки ибо эта информация лишняя, никакого конструктива не несет.
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39334319
Andrei T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевAndrei TПро "хранение символов в памяти в виде последовательностей байтов" тут говоришь только ты.
Нет. Про это сказал, немного ошибшись в деталях, Леонид. На что Вам и было указано.
Ты в хамской форме написал невнятную чушь с рядом фактических ошибок. Если подводит память, то может помочь вернуться к началу темы и прочитать еще раз.

Сергей АрсеньевВ главном, что преобразование из кодировки в которой JVM хранит строки в кодировку сеанса связи с СУБД занимается jdbc драйвер никто и не спорил.
Никакими преобразованиями драйвер не занимается. Он получает уже преобразованную строку через вызов стандартного API (как этот API реализован в конкретной JRE - не важно), в той кодировке, которая ему требуется.

Сергей АрсеньевУтверждение, что нет никакой кодировки ибо эта информация лишняя, никакого конструктива не несет.
За такой конструктив обычно снимают баллы. Просто потому что отвечать надо по существу вопроса, а не вываливать все свои скудные познания по теме и не по теме в нечленораздельной форме.
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39334342
Andrei T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев,

Сергей АрсеньевА вот Вы надумали себе что-то про то, что нет никакой кодировки
Это не я надумал, это задокументированный и всем известный факт. Твоя проблема - в незнании терминологии и
Сергей АрсеньевПрежде чем с Вами конструктивно разговаривать дайте понятие своему определению "кодировка символов".
Ибо то, что понимают все остальные под этим термином, Вы называете "кодировка байтов".
непонимании того, что "кодировка символов" и "кодировка байтов" это два абсолютно разных понятия. Это выглядит особенно глупо на фоне того, как ты с апломбом знатока фамильярно коверкаешь непосредственно относящиеся к делу термины:
Сергей АрсеньевLeonid Kudryavtsevпропущено...

А всякие биг-эндиан, ло-эндиан ?

Zip, Gzip, Bmp, Jpeg и прочее....
Индейцы это вообще не про байты, а про слова.
Если ты в курсе про порядок байтов, то проблем с пониманием того, что является и не является кодировкой, по идее быть не должно. Тем не менее они есть.
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39334363
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrei Tнепонимании того, что "кодировка символов" и "кодировка байтов" это два абсолютно разных понятия.
Тут унас расхождений нет. Просто то, что Вы называете, "кодировкой байтов" для меня "кодировка символов". Кодировка байтов - (представление байтов в другой форме нежли последовательность 8 битов, чисел от 0-255 и т.п.) это действительно совсем другое дело.
С другой стороны, поскольку Ваша "кодировка символов" в действительности не существует, по Вашему утверждению, то и зачем знать, что это такое.

И если действие производится через стандартное API, это не означает, что оно не производится.
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39334665
Andrei T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевТут унас расхождений нет. Просто то, что Вы называете, "кодировкой байтов" для меня "кодировка символов". Кодировка байтов - (представление байтов в другой форме нежли последовательность 8 битов, чисел от 0-255 и т.п.) это действительно совсем другое дело.
А мне кажется, что именно здесь у нас и есть расхождение.
Я еще в самом начале темы объяснил, что, как и почему я называю "кодировкой символов" (числовые коды) и "кодировкой байтов" (байтовое представление). Более того, я в своем первом комментарии, к которому ты придрался, объяснил, почему "кодировка символов" к обсуждаемому вопросу отношения не имеет. Что ты лично под кодировкой подразумеваешь, я до сих пор так и не понял. По-моему ты и сам запутался уже.
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39334693
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевP.S. И да мы все тут про хранение символов в памяти в виде последовательностей байтов, если походите по ссылкам выше, может прочтете, что иногда JVM это делает по разному и даже указывает как именно в составе типа java.lang.String.

Вот это та самая несусветная чушь на которую вам указывает Andrei T. Строки в JVM _всегда_ в UTF-16. Кодировка возникает только при преобразовании byte[] -> String и String -> byte[] и это всегда кодировка byte[].
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39334706
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2.3. Primitive Types and Values
char, whose values are 16-bit unsigned integers representing Unicode code points in the Basic Multilingual Plane, encoded with UTF-16, and whose default value is the null code point ('')


Код: java
1.
2.
3.
4.
5.
public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
    /** The value is used for character storage. */
    private final char value[];
   // ...



Хоть бы в документацию заглянул кто.
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39334717
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут больше спор по терминологии и документация тут не поможет.
Если кодировка у String и есть ли она у byte[]

здесь вот например тожу по этому вопросу бугуртили
http://stackoverflow.com/questions/5729806/encode-string-to-utf-8
второй ответ.

по сути даже вопрос тоже самый с крякозябрами.
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39334730
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fixxerВот это та самая несусветная чушь на которую вам указывает Andrei T. Строки в JVM _всегда_ в UTF-16. Кодировка возникает только при преобразовании byte[] -> String и String -> byte[] и это всегда кодировка byte[].

Лично я несусветной чуши не вижу.

А объяснения, в чем же заключается "несусветность" приводит к значительно большей чуше. IMHO

Вообще, предлагаю закруглятся. А то все по принципу: когда встречаются два философа и начинают беседу с фразы "давайте сначала договоримся о терминологии". Проблема топик-стартера решилась на 8-ом сообщении, 9-ое сообщение от Сергей Арсеньев последнее, которое хоть какой-то смысл имело. IMHO Далее на двух страницах флем/треп/стеб о "терминологии".

При этом от людей, которые вряд ли на практике с сложными вещами из Unicode сталкивались. А всякие "сложности" типа диакретических знаков и прочего.... как я понимаю, ровно так же сложностями в Java 1.8 и остались ((( Что и утверждение "String это набор символов без кодировки" делает так же не корректным. Т.к. достаточно столкнутся с "supplementary code points", что бы схватиться за голову и начинать крыть матом на Unicode и людей которые его придумали. Я свое уже отхватался в начале 2000-х, но тогда UTF-16/32 еще за не надобностью даже и не было, был только UTF-8. Когда выяснил, что нужных мне по работе символов в Unicode нет и не планируется. Вроде даже из комитет ответили, что добавить не могут - т.к. место кончилось )))).

BlazkowiczА что же нам скажет гугл про wide char
Wide characters are multilingual character codes that are always 16 bits wide

Леонид, вы меня пугаете.
Не понял, чем пугаю, т.к. например англоязычныя Вики уверяет:

https://en.wikipedia.org/wiki/Wide_character

Size of a wide character

UTF-16 little-endian is the encoding standard at Microsoft (and in the Windows operating system). Yet with surrogate pairs it supports 32-bit as well.[1] The .Net Framework platform supports multiple wide-character implementations including UTF7, UTF8, UTF16 and UTF32.[2]

The Java platform requires that wide character variables be defined as 16-bit values, and that characters be encoded using UTF-16 (due to former use of UCS-2), while modern Unix-like systems generally require 32-bit values encoded using UTF-32.[citation needed]

Я лично понимаю под wide char

The C standard distinguishes between multibyte encodings of characters, which use a fixed or variable number of bytes to represent each character (primarily used in source code and external files), from wide characters, which are run-time representations of characters in single objects (typically, greater than 8 bits).
Т.е. противопоставление Wide char (один символ - одно значение) и Multi Bytes (один символ - несколько значений).

Как выяснилось, тут тоже ошибался (((, т.к. оказывается в Java все же multi bytes ))). Точнее multi Characters, т.к. если я правильно прочел Вашу ссылку, есть символы, кодируемые двумя Character'ами. Т.е. честным wide char и не пахнет (((
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39334738
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevЛично я несусветной чуши не вижу.


Ну как не видите?

Сергей АрсеньевP.S. И да мы все тут про хранение символов в памяти в виде последовательностей байтов, если походите по ссылкам выше, может прочтете, что иногда JVM это делает по разному и даже указывает как именно в составе типа java.lang.String.

В этой фразе две фактических ошибки:
1. JVM не "делает это по разному".
2. "в составе типа java.lang.String" не указано ничего связаное с кодировкой, там толико char[], а char как примитивный тип четко специфицирован в JVM Spec, ссылку куда я привел.

И терминология тут не при чем.
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39334740
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevВообще, предлагаю закруглятся.

Ну, нет. Давайте продолжать. Я прям зачитываюсь этим спором на ровном месте.

Leonid KudryavtsevА то все по принципу: когда встречаются два философа и начинают беседу...

Во-во. Если JDBC вызывает метод JSE, который конвертирует строку в байты, то кто же "делает" это преобразование? Драйвер или JVM? Филосифия зашкаливает.

Leonid KudryavtsevНе понял, чем пугаю, т.к. например англоязычныя Вики уверяет...
Я лично понимаю под wide char...

Тогда предлагаю исключить этот термин из обсуждения в виду отсутсвия его точного определения.

Leonid KudryavtsevCharacters, т.к. если я правильно прочел Вашу ссылку, есть символы, кодируемые двумя Character'ами.
Да, ты же сам про codepoint выше написал.

Leonid KudryavtsevТ.е. честным wide char и не пахнет (((
Ну, это же UTF-16 и есть. Предлагаю этот термин исключить из обсуждения, потому что ты понимаешь под ним что-то своё. А в интернетах мнения расходятся.
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39334751
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczLeonid KudryavtsevВообще, предлагаю закруглятся.

Ну, нет. Давайте продолжать. Я прям зачитываюсь этим спором на ровном месте.

So do I

Я бы продолжил, но в твоем сообщении только один вопрос:

BlazkowiczВо-во. Если JDBC вызывает метод JSE, который конвертирует строку в байты, то кто же "делает" это преобразование? Драйвер или JVM?

Курица !

Т.к. спор курица vs яйцо явно возник значительно раньше, чем Java - то думаю, во всем она /курица/ и виновата
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39335291
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fixxerВот это та самая несусветная чушь на которую вам указывает Andrei T. Строки в JVM _всегда_ в UTF-16 . Кодировка возникает только при преобразовании byte[] -> String и String -> byte[] и это всегда кодировка byte[].
А - он говорит другое.
Б - выделено жирным
В - почитайте ссылки выше, про варианты представления строк при использовании определенных ключей, и то, что засунуто в java 9

Кодировка чего-то это представление чего-то в другом виде.

Если позиция
Andrei Tя называю "кодировкой символов" (числовые коды)
Имеет право на существование, (и более того IMHO верна), хотя некоторые считают, что это не так
BlazkowiczLeonid KudryavtsevВроде называется Unicode
Нет такой кодировки. ;)
Хотя Unicode и есть стандарт кодирования символов числом.

Спор весь построен на фразе, что коды к вопросу не относятся.

Хотя описание процесса в ответе Леонида и было в последовательности преобразований кодов символов.

Суть же ответа, что надо указать исходные для файла или переделать файл так, чтоб он правильно преобразовывался к типу char и далее уже по накатанной... С этим как сказал один умный человек
BlazkowiczКоллеги, не останавливайтесь. Ещё только вторая страница спора в котором все правы.
Просто спор о том, что такое Java закончился, а интересных тем не было...
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39335294
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczВо-во. Если JDBC вызывает метод JSE, который конвертирует строку в байты, то кто же "делает" это преобразование?
Арифметеко-логическое устройство же. Вышеперечисленные им только командуют по иерархии. :)
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39335298
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевХотя Unicode и есть стандарт кодирования символов числом.

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

Сергей АрсеньевПросто спор о том, что такое Java закончился, а интересных тем не было...
Сегодня на повестке дня "Скриптлеты. Удобный инструмента или пагубная привычка?".
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39335318
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fixxer2. "в составе типа java.lang.String" не указано ничего связаное с кодировкой, там толико char[], а char как примитивный тип четко специфицирован в JVM Spec, ссылку куда я привел.
-XX:+UseCompressedStrings и JEP 254: Compact Strings

Хотя в основном да это тип char, который с точки зрения программиста на языке Java никак не связан с числом если не копаться внутри. Если покопаться, то может быть выяснено, что он может представлять собой записанные в кодировке UTF-16 символы. Но, как сказал уважаемый оппонент, копаться не стоит, ибо к делу не относится.
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39335328
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczВерно. Но в этом стандарте нет ни слова о том как упаковать это число в байты.
Так там же группа стандартов. В нее входят и про форматы трансформации этих кодов. Ну хоть бы RFC 4042. :)

BlazkowiczСегодня на повестке дня "Скриптлеты. Удобный инструмента или пагубная привычка?".
Спасибо, пойду почитаю...
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39335406
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньевfixxer2. "в составе типа java.lang.String" не указано ничего связаное с кодировкой, там толико char[], а char как примитивный тип четко специфицирован в JVM Spec, ссылку куда я привел.
-XX:+UseCompressedStrings и JEP 254: Compact Strings


Какой вы трудный. -XX:+UseCompressedStrings был введен в Java 6 update 21 в качестве экспериментальной фичи, в последствии это было признано ошибкой и опция была deprecated в Java 7 и убрана в Java 8.
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39335431
Andrei T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Blazkowicz]Сергей АрсеньевХотя Unicode и есть стандарт кодирования символов числом.

Верно. Но в этом стандарте нет ни слова о том как упаковать это число в байты.
Вообще-то есть: http://unicode.org/glossary/
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39335451
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39335477
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fixxerКакой вы трудный. -XX:+UseCompressedStrings был введен в Java 6 update 21 в качестве экспериментальной фичи, в последствии это было признано ошибкой и опция была deprecated в Java 7 и убрана в Java 8.
Занудный. Собственно речь и шла, про редкие случаи (плюс то, что по слухам намечается в 9-ке из коробки).
...
Рейтинг: 0 / 0
Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
    #39335492
Andrei T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming http://unicode.org/reports/tr17/#CharacterEncodingScheme
просто ссылка
Хорошая ссылка, некоторым тут будет полезно её распечатать и внимательно прочитать.
...
Рейтинг: 0 / 0
25 сообщений из 88, страница 3 из 4
Форумы / Java [игнор отключен] [закрыт для гостей] / Как записать строку из properties-файла (UTF-8) в БД с кодировкой WIN1251?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]