|
|
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
подскажите пожалуйста: как можно поменять кодировку у массива байт: Код: plaintext 1. 2. 3. 4. 5. 6. 7. как можно поменять кодировку у массива, без перевода его в строку обратно.?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 15:24:49 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
авторкак можно поменять кодировку у массива, без перевода его в строку обратно.?? мммм у byte нет кодировки!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 15:27:36 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
во как.... а как быть, мне текст надо сжать в 7 бит и передать его в соответствующей кодировке (похожая на ASCII)...если использовать строки, то там некоторые символы при сжатии не правильно воспринимаются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 15:30:05 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
или неправильно читаете или неправильно пишете, код покажете ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 15:36:20 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
ТимоНмммм у byte нет кодировки!!! Это у String нет кодировки. А byte[] это представление строки в какой-либо кодировке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 16:13:03 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
denisshкак можно поменять кодировку у массива, без перевода его в строку обратно.?? InputStreamReader + OutputStreamWriter ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 16:17:04 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
авторНадо чётко разделять понятия символов и байтов — иначе непонимание и проблемы гарантированны. Java практически с самого своего рождения использует для кодирования символов стандарт Unicode. Библиотечные функции Java ожидают увидеть в переменных типа char символы, представленные кодами Unicode. В принципе, Вы, конечно, можете запихнуть туда что угодно — цифры есть цифры, процессор всё стерпит, но при любой обработке библиотечные функции будут действовать исходя из предположения что им передали кодировку Unicode. Так что можно спокойно полагать, что у типа char кодировка зафиксирована. Но это внутри JVM. Когда данные читаются извне или передаются наружу, то они могут быть представлены только одним типом - типом byte. Все прочие типы конструируются из байтов в зависимости от используемого формата данных. Вот тут то на сцену и выходят кодировки — в Java это просто формат данных для передачи символов, который используется для формирования данных типа char. Для каждой кодовой страницы в библиотеке имеется по 2 класса перекодировки (ByteToChar и CharToByte). Классы эти лежат в пакете sun.io. Если, при перекодировке из char в byte не было найдено соответствующего символа, он заменяется на символ ?. отсюда http://www.jug.ru/servlets/index?page=rus#8bits ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 16:19:31 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
авторЭто у String нет кодировки. А byte[] это представление строки в какой-либо кодировке. byte[] - всегда в unicode ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 16:21:54 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
ТимоНмммм у byte нет кодировки!!! ТимоН авторЭто у String нет кодировки. А byte[] это представление строки в какой-либо кодировке. byte[] - всегда в unicode - ну Вы даете! :) или я нчего не понял :( массив типа byte[] содержит числа типа byte (они по определению не имеют кодировки, так же как int или long) Unicode имеет длину кода 2 байта при конвертации строки в байтовый массив "текст".getBytes() происходит конвертация кодов (в однобайтовую кодировку ISO-8859-1), а если указать кодировку явно: "текст".getBytes("кодировка"), можно получить массив байтов для нужной кодировки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 17:33:56 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
автор- ну Вы даете! :) или я нчего не понял :( я имел ввиду как раз авторпри конвертации строки в байтовый массив "текст".getBytes() происходит конвертация кодов (в однобайтовую кодировку ISO-8859-1), ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 17:41:08 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
ТимоН я имел ввиду как раз авторпри конвертации строки в байтовый массив "текст".getBytes() происходит конвертация кодов (в однобайтовую кодировку ISO-8859-1), ISO-8859-1 не Unicode ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 18:20:40 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
ТимоНbyte[] - всегда в unicode то есть уже какая-то кодировочка появилась? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 18:22:01 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
:) Т.е. "строка в любой кодировке".getBytes() - всегда юникод ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 18:24:10 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
авторISO-8859-1 не Unicode Почти: В Юникоде первые 256 кодовых позиций совпадают с ISO-8859-1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 18:26:40 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
ТимоН"строка в любой кодировке".getBytes() - всегда юникод "строка в любой кодировке"... приплыли. У меня сразу ряд вопросов. 1) У меня есть String s = "строка", как мне узнать её кодировку? 2) У меня есть String s = "строка", после ответа на первый вопрос оказалось что она всегда в кодировке ZZZ. Вопрос, как мне получить String s2 в другой кодировке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 18:27:37 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
ТимоН Почти: В Юникоде первые 256 кодовых позиций совпадают с ISO-8859-1. Оки-доки, босс. Следуя этой логикой, если у ASCII первые 128 позиций совпадают с ISO-8859-1, то ASCII тоже Unicode? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 18:29:14 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
1. строка String str = "строка" - юникод, узнавать ничего ненадо 2. http://www.jug.ru/servlets/index?page=rus#recode ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 18:34:44 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
авторОки-доки, босс. Следуя этой логикой, если у ASCII первые 128 позиций совпадают с ISO-8859-1, то ASCII тоже Unicode? ок, ладно. Вы правы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 18:37:07 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
ТимоН1. строка String str = "строка" - юникод, узнавать ничего ненадо Ты сам написал выше "строка в любой кодировке". Вот было интересно что такое кодировка по отношению к строке, которая представлена экземпляром класса String. Теперь, как я и ожидал, ты пишешь что строка всегда Unicode. Выходит Unicode и "любая кодировка" одно и то же, либо ты сам себе противоречишь. ТимоН2. http://www.jug.ru/servlets/index?page=rus#recode Не надо мне ссылок на всякие глупости, как и куда переганять байты я себе прекрасно представляю. А то что строка может показывать не то что хочется не есть призрак её не верной кодировки. Это признак того что byte[] был интерпретирован не правильно. То есть при его декодировании была подставлена не его кодировка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 18:43:41 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
авторТы сам написал выше "строка в любой кодировке". Вот было интересно что такое кодировка по отношению к строке, которая представлена экземпляром класса String. Теперь, как я и ожидал, ты пишешь что строка всегда Unicode. Выходит Unicode и "любая кодировка" одно и то же, либо ты сам себе противоречишь. Ок. Видимо жара :) Объясню на примере, что я имел ввиду. Какие бы вы данные нехранили в String в JVM они всегда unicode. Т.е. если вы не указали кодировку при чтении(к примеру) из файла (какой бы она небыла), то ваши данные считаются неверно. JVM ждет от вас unicode или указанную вами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2007, 18:51:38 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
всем привет... есть некоторый текст, вот его дамп 56 65 72 6e 6f 2e 20 54 76 6f 6a 20 72 65 6a 74 69 6e 67 20 20 2d 20 32 31 2c 20 75 20 6c 69 64 65 72 61 20 2d 20 25 6c 65 61 64 65 72 5f 6d 61 72 6b 25 2e 20 0d 0a 50 6f 20 6e 61 72 6f 64 6e 6f 6a 20 70 72 69 6d 65 74 65 20 2d 20 65 73 6c 69 20 6e 65 76 65 73 74 61 20 63 68 69 68 61 65 74 20 75 74 72 6f 6d 20 6e 61 6b 61 6e 75 6e 65 20 73 76 61 64 20 62 79 2c 20 6f 6e 61 20 76 20 7a 61 6d 75 затем я его кодирую в 7 бит и получается ac65 b9fb ed02 51ed 6f35 485e 56d3 d3ee 3308 d402 c962 2c50 1dc4 4e93 cbf2 30a8 052a b1cb 6172 59fe 6d87 e5eb 920b d450 40df 2077 58fe 26bb df6a 105c 9e6e 97e9 6550 0b54 9eb3 d320 77d9 5e9e d3c3 a031 3a8d 0e97 e9a0 3a5d fe6e 83dc e175 d85d 7797 4173 7b98 0c12 e759 a0b7 3b0c b283 f4e1 761d затем я его отправляю по сети....и оно приходит в таком виде 3f 65 3f 3f 3f 02 51 3f 6f 35 48 5e 56 3f 3f 3f 33 08 3f 02 3f 62 2c 50 1d 3f 4e 3f 3f 3f 30 3f 05 2a 3f 3f 61 72 59 3f 6d 3f 3f 3f 3f 0b 3f 50 40 3f 20 77 58 3f 26 3f 3f 6a 10 5c 3f 6e 3f 3f 65 50 0b 54 3f 3f 3f 20 77 3f 5e 3f 3f 3f 3f 31 3a 3f 0e 3f 3f 3f 3a 5d 3f 6e 3f 3f 3f 75 3f 5d 77 3f 41 73 7b 3f 0c 12 3f 59 3f 3f 3b 0c 3f 3f 3f 3f 76 1d т.е. некоторые символы заменяются на 3F...т.е. на знак вопроса сообщение я формирую следующим образом: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2007, 04:54:15 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
setMessage(new String(msg.getBuffer()), ASCII); если в недрах этого метода не выполняется взяте байт от юникодной строки в аскишной кодировке, а просто ставится хидер, то, естественно, это не будет работать правильно... ПыСЫ а нафига ты его кодируешь в 7 бит? Нельзя чтоли сразу нужные байты получить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2007, 08:08:27 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
И правда, а зачем ты после перекодирования опять new String делаешь? Твои байты уже не верно декодированы, и потом неверно декодированая строка передается в сообщении? В чем был глубинный смысл кодирования в 7 бит, если посылается обычная строка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2007, 08:36:18 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
в 7 бит кодировать - это для того чтобы в пакет, который передается по сети поместилось больше данных. На другом конце пакет принимают, и данные декодируют....кодировать нужно только латинские символы, т.е. первые 128...все остальные отправлять обычно (7 бит - это стандартная кодировка в GSM сети) а в метод я кладу строку, потомучто реализация у библиотеки такая, только строку можно давать Код: plaintext 1. можно конечно поковыряться в самой библиотеки и сделать метод для принятия массива байт,.... но это не 10 минут....... да и я не понимаю, что это может изменить? перевод в строку както неверно происходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2007, 11:11:57 |
|
||
|
изменение кодировки
|
|||
|---|---|---|---|
|
#18+
ну раз так, то толку от твоего кодирования никакого нету, т.к. у тебя все равно строка в юникоде. Какую ты делаешь кодировку лучше скажи, и вообще, клади компилирующийся рабочий код, посмотрим, что можно сделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2007, 11:36:31 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34555542&tid=2145591]: |
0ms |
get settings: |
18ms |
get forum list: |
28ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
74ms |
get topic data: |
21ms |
get forum data: |
5ms |
get page messages: |
103ms |
get tp. blocked users: |
3ms |
| others: | 347ms |
| total: | 609ms |

| 0 / 0 |
