Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Java > Перекодировка String-byte-String


Автор: Ezdon 28.05.02, 18:40
Прошу помощи в решении простой(как мне кажется проблеммы)
Нужно перекодировать строку Кирилицы в byte и обратно.
Написал:
//////////////////////////////////////////////////
byte abCommarea[] = null;
String strCommarea2 = "Проба";
String strEncoding = "1025";
int iCommareaLength = 27 ;
abCommarea = new byte[iCommareaLength];
abCommarea = strCommarea2.getBytes(strEncoding);
String strCommarea2 = new String(abCommarea, strEncoding);
//////////////////////////////////////////////////////
в результате получаю изуродованную строку:
"ЂЂЂЂЂ"
Как получить свои буковки назад в целости?
Заранее благодарен.

Автор: tatar_0x4E 29.05.02, 08:54
  Кодировки - вещь скользкая, но, например, вот так у меня все работает:


   String str = new String("Проба");
 
  try {
       byte [] b = str.getBytes("UTF-8");
       String str1 = new String(b, "UTF-8");
       jTextArea1.setText(str + "{}" + str1);
   } catch(java.io.UnsupportedEncodingException excpt) {
       
   }

   В JTextArea имеем:  
 
   Проба{}Проба
   
   В консоль, кстати, выводит :

   ?????{}?????

    System.out подвел :D

Автор: tatar_0x4E 29.05.02, 08:58
Кстати, а при чем здесь 1025 ???

Читаем:

         Encoding names generally follow the conventions documented in RFC2278: IANA Charset Registration Procedures. If an encoding listed in the IANA Charset Registry is supported by an implementation of the Java platform then one of its names must be the name listed in the registry. Many encodings are given more than one name in the registry, in which case the registry identifies one of the names as MIME-preferred. An implementation of the Java platform must support the MIME-preferred registry name for a supported encoding if there is one; for convenience it may additionally support other registry names. The IANA MIME-preferred name of an encoding, if there is one, is often, but not necessarily, its canonical name. Following IANA convention, the mapping from IANA registry names to encodings is not case-sensitive.

         Every implementation of the Java platform is required to support the following character encodings. Consult the release documentation for your implementation to see if any other encodings are supported.

US-ASCIISeven-bit ASCII, a.k.a. ISO646-US, a.k.a. the Basic Latin block of the Unicode character setISO-8859-1  

ISO Latin Alphabet No. 1, a.k.a. ISO-LATIN-1

UTF-8Eight-bit Unicode Transformation Format

UTF-16BESixteen-bit Unicode Transformation Format, big-endian byte order

UTF-16LESixteen-bit Unicode Transformation Format, little-endian byte order

UTF-16Sixteen-bit Unicode Transformation Format, byte order specified by a mandatory initial byte-order mark (either order accepted on input, big-endian used on output)

Хм, хм...

Автор: Ezdon 30.05.02, 07:36
[QUOTE=tatar_0x4E, 29.05.02, 12:58:20]Кстати, а при чем здесь 1025 ???

>Читаем:


>          Every implementation of the Java platform is required to support the following >character encodings. Consult the release documentation for your implementation to see if >any other encodings are supported.

Следуя этой здравой рекомендации находим:
┌────────────────────────────────────────────────────────────────────┐
│ Table 6. Cyrillic, EBCDIC                                                                                          │
├─────────┬──────────┬─────────┬─────────────────────────────────────┤
│ SRVERCP    │ CCSID         │ CPGID        │                                            
├─────────┼──────────┼─────────┼─────────────────────────────────────┤
│ 1025         │ 01025          │ 01025        │ Host: Cyrillic multilingual                                 │
└─────────┴──────────┴─────────┴────────────────────────────    ──────┘
:)
Спасибо за помощь.

Автор: Ezdon 30.05.02, 09:23
[QUOTE=tatar_0x4E, 29.05.02, 12:58:20]Кстати, а при чем здесь 1025 ???

>Читаем:


>          Every implementation of the Java platform is required to support the following >character encodings. Consult the release documentation for your implementation to see if >any other encodings are supported.

Следуя этой здравой рекомендации находим:
......
Н да процитировать доку не удалось, опять кодировка:)
Короче 1025 это Cyrillic,EBCDIC                                                                                          
:)
Спасибо за помощь.

Автор: tatar_0x4E 31.05.02, 08:22
Цитата Ezdon, 30.05.02, 13:23:33
Кстати, а при чем здесь 1025 ???

>Читаем:


>          Every implementation of the Java platform is required to support the following >character encodings. Consult the release documentation for your implementation to see if >any other encodings are supported.

Следуя этой здравой рекомендации находим:
......
Н да процитировать доку не удалось, опять кодировка:)
Короче 1025 это Cyrillic,EBCDIC                                                                                          
:)
Спасибо за помощь.


Это я догадался, просто был не уверен что стандартное написание именно 1025, обычно там присутствуют буквенные обозначения :) Впрочем, я так понимаю, ты пишешь для какого-нибудь AIX, так что все может быть :)

Насчет помощи - you are welcom :)

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)