Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: UTF-8 - как раскодировать в стандартную WIN-1251? Добавлено: 07.07.07 23:29  

Автор вопроса:  Programmer
Как перевести текст из кодировки utf-8 в Windows-1251, что-бы можно было из программы прочитать? Какието иероглифы, но точно знаю, что именно utf-8. Пытался StrConv - не получилось. Заранее спасибо, очень нужно.

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #1 Добавлено: 08.07.07 01:03
WideCharToMultiByte ?

Ответить

Номер ответа: 2
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #2
Добавлено: 08.07.07 04:30
Можно использовать таблицу соответствия.
Символам у которых код превышает 128 в UTF8 отводится 2 или 3 байта. Ищи эти сочетания и заменяй на соответствующие символы.

Ответить

Номер ответа: 3
Автор ответа:
 Programmer



Вопросов: 71
Ответов: 246
 Профиль | | #3 Добавлено: 08.07.07 14:21
Символам у которых код превышает 128 в UTF8 отводится 2 или 3 байта.

Я был бы тебе очень благодарен, если бы ты привенл код...
...сочетания и заменяй на соответствующие символы...

Откуда я узнаю какие сочетания соответствуют этим символам?

ХАКЕР, а по русски?

Ответить

Номер ответа: 4
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #4
Добавлено: 08.07.07 15:07
Конечно может быть я где - то не прав, но я делал это так:

Модуль
Private UTF8Chars() As String

Public Sub InitializeUTF8()
Dim s As String
s = Chr(208) + Chr(130) + Chr(38) + Chr(38) + Chr(208) + Chr(131) + Chr(38) + Chr(38) + Chr(226) + Chr(128) + Chr(154) + Chr(38) + Chr(38) + Chr(209) + Chr(147) + Chr(38) + Chr(38) + Chr(226) + Chr(128) + Chr(158) + Chr(38)
s = s + Chr(38) + Chr(226) + Chr(128) + Chr(166) + Chr(38) + Chr(38) + Chr(226) + Chr(128) + Chr(160) + Chr(38) + Chr(38) + Chr(226) + Chr(128) + Chr(161) + Chr(38) + Chr(38) + Chr(226) + Chr(130) + Chr(172) + Chr(38) + Chr(38)
s = s + Chr(226) + Chr(128) + Chr(176) + Chr(38) + Chr(38) + Chr(208) + Chr(137) + Chr(38) + Chr(38) + Chr(226) + Chr(128) + Chr(185) + Chr(38) + Chr(38) + Chr(208) + Chr(138) + Chr(38) + Chr(38) + Chr(208) + Chr(140) + Chr(38)
s = s + Chr(38) + Chr(208) + Chr(139) + Chr(38) + Chr(38) + Chr(208) + Chr(143) + Chr(38) + Chr(38) + Chr(209) + Chr(146) + Chr(38) + Chr(38) + Chr(226) + Chr(128) + Chr(152) + Chr(38) + Chr(38) + Chr(226) + Chr(128) + Chr(153)
s = s + Chr(38) + Chr(38) + Chr(226) + Chr(128) + Chr(156) + Chr(38) + Chr(38) + Chr(226) + Chr(128) + Chr(157) + Chr(38) + Chr(38) + Chr(226) + Chr(128) + Chr(162) + Chr(38) + Chr(38) + Chr(226) + Chr(128) + Chr(147) + Chr(38)
s = s + Chr(38) + Chr(226) + Chr(128) + Chr(148) + Chr(38) + Chr(38) + Chr(194) + Chr(152) + Chr(38) + Chr(38) + Chr(226) + Chr(132) + Chr(162) + Chr(38) + Chr(38) + Chr(209) + Chr(153) + Chr(38) + Chr(38) + Chr(226) + Chr(128)
s = s + Chr(186) + Chr(38) + Chr(38) + Chr(209) + Chr(154) + Chr(38) + Chr(38) + Chr(209) + Chr(156) + Chr(38) + Chr(38) + Chr(209) + Chr(155) + Chr(38) + Chr(38) + Chr(209) + Chr(159) + Chr(38) + Chr(38) + Chr(194) + Chr(160)
s = s + Chr(38) + Chr(38) + Chr(208) + Chr(142) + Chr(38) + Chr(38) + Chr(209) + Chr(158) + Chr(38) + Chr(38) + Chr(208) + Chr(136) + Chr(38) + Chr(38) + Chr(194) + Chr(164) + Chr(38) + Chr(38) + Chr(210) + Chr(144) + Chr(38)
s = s + Chr(38) + Chr(194) + Chr(166) + Chr(38) + Chr(38) + Chr(194) + Chr(167) + Chr(38) + Chr(38) + Chr(208) + Chr(129) + Chr(38) + Chr(38) + Chr(194) + Chr(169) + Chr(38) + Chr(38) + Chr(208) + Chr(132) + Chr(38) + Chr(38)
s = s + Chr(194) + Chr(171) + Chr(38) + Chr(38) + Chr(194) + Chr(172) + Chr(38) + Chr(38) + Chr(194) + Chr(173) + Chr(38) + Chr(38) + Chr(194) + Chr(174) + Chr(38) + Chr(38) + Chr(208) + Chr(135) + Chr(38) + Chr(38) + Chr(194)
s = s + Chr(176) + Chr(38) + Chr(38) + Chr(194) + Chr(177) + Chr(38) + Chr(38) + Chr(208) + Chr(134) + Chr(38) + Chr(38) + Chr(209) + Chr(150) + Chr(38) + Chr(38) + Chr(210) + Chr(145) + Chr(38) + Chr(38) + Chr(194) + Chr(181)
s = s + Chr(38) + Chr(38) + Chr(194) + Chr(182) + Chr(38) + Chr(38) + Chr(194) + Chr(183) + Chr(38) + Chr(38) + Chr(209) + Chr(145) + Chr(38) + Chr(38) + Chr(226) + Chr(132) + Chr(150) + Chr(38) + Chr(38) + Chr(209) + Chr(148)
s = s + Chr(38) + Chr(38) + Chr(194) + Chr(187) + Chr(38) + Chr(38) + Chr(209) + Chr(152) + Chr(38) + Chr(38) + Chr(208) + Chr(133) + Chr(38) + Chr(38) + Chr(209) + Chr(149) + Chr(38) + Chr(38) + Chr(209) + Chr(151) + Chr(38)
s = s + Chr(38) + Chr(208) + Chr(144) + Chr(38) + Chr(38) + Chr(208) + Chr(145) + Chr(38) + Chr(38) + Chr(208) + Chr(146) + Chr(38) + Chr(38) + Chr(208) + Chr(147) + Chr(38) + Chr(38) + Chr(208) + Chr(148) + Chr(38) + Chr(38)
s = s + Chr(208) + Chr(149) + Chr(38) + Chr(38) + Chr(208) + Chr(150) + Chr(38) + Chr(38) + Chr(208) + Chr(151) + Chr(38) + Chr(38) + Chr(208) + Chr(152) + Chr(38) + Chr(38) + Chr(208) + Chr(153) + Chr(38) + Chr(38) + Chr(208)
s = s + Chr(154) + Chr(38) + Chr(38) + Chr(208) + Chr(155) + Chr(38) + Chr(38) + Chr(208) + Chr(156) + Chr(38) + Chr(38) + Chr(208) + Chr(157) + Chr(38) + Chr(38) + Chr(208) + Chr(158) + Chr(38) + Chr(38) + Chr(208) + Chr(159)
s = s + Chr(38) + Chr(38) + Chr(208) + Chr(160) + Chr(38) + Chr(38) + Chr(208) + Chr(161) + Chr(38) + Chr(38) + Chr(208) + Chr(162) + Chr(38) + Chr(38) + Chr(208) + Chr(163) + Chr(38) + Chr(38) + Chr(208) + Chr(164) + Chr(38)
s = s + Chr(38) + Chr(208) + Chr(165) + Chr(38) + Chr(38) + Chr(208) + Chr(166) + Chr(38) + Chr(38) + Chr(208) + Chr(167) + Chr(38) + Chr(38) + Chr(208) + Chr(168) + Chr(38) + Chr(38) + Chr(208) + Chr(169) + Chr(38) + Chr(38)
s = s + Chr(208) + Chr(170) + Chr(38) + Chr(38) + Chr(208) + Chr(171) + Chr(38) + Chr(38) + Chr(208) + Chr(172) + Chr(38) + Chr(38) + Chr(208) + Chr(173) + Chr(38) + Chr(38) + Chr(208) + Chr(174) + Chr(38) + Chr(38) + Chr(208)
s = s + Chr(175) + Chr(38) + Chr(38) + Chr(208) + Chr(176) + Chr(38) + Chr(38) + Chr(208) + Chr(177) + Chr(38) + Chr(38) + Chr(208) + Chr(178) + Chr(38) + Chr(38) + Chr(208) + Chr(179) + Chr(38) + Chr(38) + Chr(208) + Chr(180)
s = s + Chr(38) + Chr(38) + Chr(208) + Chr(181) + Chr(38) + Chr(38) + Chr(208) + Chr(182) + Chr(38) + Chr(38) + Chr(208) + Chr(183) + Chr(38) + Chr(38) + Chr(208) + Chr(184) + Chr(38) + Chr(38) + Chr(208) + Chr(185) + Chr(38)
s = s + Chr(38) + Chr(208) + Chr(186) + Chr(38) + Chr(38) + Chr(208) + Chr(187) + Chr(38) + Chr(38) + Chr(208) + Chr(188) + Chr(38) + Chr(38) + Chr(208) + Chr(189) + Chr(38) + Chr(38) + Chr(208) + Chr(190) + Chr(38) + Chr(38)
s = s + Chr(208) + Chr(191) + Chr(38) + Chr(38) + Chr(209) + Chr(128) + Chr(38) + Chr(38) + Chr(209) + Chr(129) + Chr(38) + Chr(38) + Chr(209) + Chr(130) + Chr(38) + Chr(38) + Chr(209) + Chr(131) + Chr(38) + Chr(38) + Chr(209)
s = s + Chr(132) + Chr(38) + Chr(38) + Chr(209) + Chr(133) + Chr(38) + Chr(38) + Chr(209) + Chr(134) + Chr(38) + Chr(38) + Chr(209) + Chr(135) + Chr(38) + Chr(38) + Chr(209) + Chr(136) + Chr(38) + Chr(38) + Chr(209) + Chr(137)
s = s + Chr(38) + Chr(38) + Chr(209) + Chr(138) + Chr(38) + Chr(38) + Chr(209) + Chr(139) + Chr(38) + Chr(38) + Chr(209) + Chr(140) + Chr(38) + Chr(38) + Chr(209) + Chr(141) + Chr(38) + Chr(38) + Chr(209) + Chr(142) + Chr(38)
s = s + Chr(38) + Chr(209) + Chr(143)
UTF8Chars = Split(s, "&&";)
End Sub

Public Function UTF8ToANSI(UTF8 As String) As String
Dim s As String, i As Integer, t As String, j As Integer
s = UTF8
For i = 128 To 255
    s = Replace(s, UTF8Chars(i - 128), Chr(i))
Next i
UTF8ToANSI = s
End Function


т.е. сначала запускаем UTF8Initialize, а потом уже переводим всё что угодно функцией UTF8ToANSI.

Прекрасно понимаю, что код не оптимизированный и кривой, но работает.

Ответить

Номер ответа: 5
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #5 Добавлено: 08.07.07 17:13
А по русски - в поиск.
http://subscribe.ru/archive/comp.design.snoozex/200105/09220023.html

Ответить

Номер ответа: 6
Автор ответа:
 Programmer



Вопросов: 71
Ответов: 246
 Профиль | | #6 Добавлено: 09.07.07 09:44
Огромное спасибо, работает!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам