Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.65/26: Рейтинг темы: голосов - 26, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 12.03.2008
Сообщений: 21
1

Кодировка строки! (win, koi8, dos)

13.03.2008, 08:29. Показов 5305. Ответов 10
Метки нет (Все метки)

Можно ли как-нить узнать в VB, в какой кодировке строка (win, koi8, dos), и затем изменить ее на виндовую (win-1251)
поискал в мсдне, есть токо одна функция strconv(), но она делает не то..
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.03.2008, 08:29
Ответы с готовыми решениями:

Какие кодировки(win, koi8, dos, mac, iso) поддерживает RichEdit
Какие кодировки(win, koi8, dos, mac, iso) поддерживает RichEdit

Таблица FoxPro,Dos<->Win кодировка и обнлвление
Подключил *.dbf таблицу. На страницу выводятся иероглифы. Если принудительно поставить...

Кодировка KOI8-R
Всем привет. У меня проблема, я прописал в html файле &lt;meta http-equiv=&quot;Content-Type&quot;...

Кодировка koi8-r
Всем привет! поискал по всему интернету про кодировку koi8-r нашел кое-что про нее, но чем...

10
eddy
13.03.2008, 11:01 2
Visual Basic
1
2
Public Declare Function GetACP Lib 'kernel32' Alias 'GetACP' () As Long
Public Declare Function GetOEMCP Lib 'kernel32' Alias 'GetOEMCP' () As Long
GetACP() - возвращает кодировку ANSI (полное наименование функции Get ANSI Code Page)

GetOEMCP() - то же, только OEM.
0 / 0 / 0
Регистрация: 12.03.2008
Сообщений: 21
13.03.2008, 12:34  [ТС] 3
Спасибо за помощь!

но эти функции возвращают текущую кодировку системы, т.е. у мня кодировка виндовая, то и вернет getacp --> 1251

а как определить кодировку строки (переменной), а затем ее заправить под кодировку системы?
0
eddy
13.03.2008, 13:10 4
Для кодировки под систему используются:
CharToOEM() или OEMToChar() (см. API)

Как определить кодировку строки - не знаю.

Успеха!
eddy
13.03.2008, 13:11 5
Для кодировки под систему используются:
CharToOEM() или OEMToChar() (см. API)

Как определить кодировку строки - не знаю.

Успеха!
0 / 0 / 0
Регистрация: 12.03.2008
Сообщений: 21
17.03.2008, 06:26  [ТС] 6
видел на днях исходник написанный на сях, где сделана переделка из koi8 в win1251, наоборот и т.п.
делается там это ручками походу, т.к. в сях я не шарю..

[code]

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void help(void)
{
puts('Конвертер кириллицы в DOS(CP866),Windows(CP1251) и КОИ-8');
puts('Формат запуска: CONVERT файл-источник файл-приемник РЕЖИМ');
puts('Режим может быть следующим:');
puts('dw - из DOSa в Windows');
puts('dk - из DOSa в КОИ-8');
puts('wd - из Windows в DOS');
puts('wk - из Windows в КОИ-8');
puts('kd - из КОИ-8 в DOS');
puts('kw - из КОИ-8 в Windows');
puts('в этих режим файл-приемник не обязателен');
puts('Также можно изменять код новой строки, свойственный UNIX и DOS(Windows)');
puts('ud - из UNIXa в DOS');
puts('du - из DOSa в UNIX');
puts('А в этих режимах файл-приемник необходим');
getch();
exit(255);
}
void main(int argc,char *argv[])
{
FILE *in,*out;
long i,t=0,m=0,j;
char dw[]={'└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюя###жжжжЦ= жж==Ц=ЦЦЦЦжЦжжж====ж=ж=Ц=ЦЦ==ЦжжЦЦ#####ЁёЄєЇїЎў°∙·√№¤■ и╕к║п┐бв░Х╖?╣дИа'};
char dk[]={'стўчфхЎ·щъыьэюяЁЄєЇїцшу■√¤ ∙°№рё┴┬╫╟─┼╓┌╔╩╦╠═╬╧╨РСТБЗ▓┤зж╡бионмГДЙИЖАКп░ле╗╕▒а╛╣║╢╖кйвд ╜╝ЕВНМОПЛ╥╙╘╒╞╚├▐█▌▀┘╪▄└╤│гЩШУЫЯЧЬХЮЦ┐ЭФЪ'};
char wd[]={'??'? '.┼╪■%?<?????'' ' '--■T?>???? Ўў?¤?|ЁcЄ '┐-RЇ°?Ii?u·ё№є '???їАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхц чшщъыьэюя'};
char wk[]={'??'? '.К╝Ф%?<?????'' ' '--ФT?>????ЪЯЧ?Э?|│cЩ 'Г-RУЬ?Ii?uЮг┐Ш '???ЫстўчфхЎ·щъыьэюяЁЄєЇїцшу■√¤ ∙°№рё┴┬╫╟─┼╓┌╔╩╦╠═╬╧╨╥╙╘╒╞╚├▐█▌▀┘╪▄└╤'};
char kd[]={'─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓Ї■∙√ўєЄ ї°¤·Ў═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩&#9578
0
0 / 0 / 0
Регистрация: 16.02.2008
Сообщений: 17
17.03.2008, 12:11 7
code
Option Explicit
Enum Code
Win = 1
Dos = 2
Koi = 3
Iso = 5
End Enum
Function Recode(Char As String, Src As Code, Dest As Code) As String
Const wDos As String = '°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧрЩЪЫЬЭЮЯтуфхцчшщсыь эюяШъЂЃ‚ѓ„…†‡?‰Љ‹ЊЌЋЏђ‘’“”•–—?™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Їабвгдежзийклмноп'
Const wIso As String = '°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧўЩЪЫЬЭЮЯтуфхцчшщсыь эюяШъ°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеж зийклмноп'
Const wKoi As String = 'ђ‘’Ѓ‡Іґ§¦µЎЁ®­¬ѓ„‰?†ЂЉЇ°«Ґ»ё± ѕ№є¶·Є©ў¤Ѕі…‚ЌЊЋЏ‹™?“›џ—њћЈ–љќ”їј•бвчздецъйклмнопртуфхжигюыэ ящшьасБВЧЗДЕЦЪЙКЛМНОПРТУФХЖИГЮЫЭЯЩШЬАС'
Const wWin As String = 'ЂЃ‚ѓ„…†‡?‰Љ‹ЊЌЋЏђ‘’“”•–—?™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬ ЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя'
Const NotRecodedChar As String = '?'

If Src = Dest Then
Recode = Char
Exit Function
End If

Dim t As String, i As Long, tt As String, a As Long, ss As String, ch As String
If Src = Win Then
t = Char
Else
Select Case Src
Case Koi: ss = wKoi
Case Dos: ss = wDos
Case Iso: ss = wIso
End Select
For i = 1 To Len(Char)
ch = Mid(Char, i, 1)
If Asc(ch) < 128 Then
t = t & ch
Else
a = InStr(1, ss, ch, vbBinaryCompare)
If a = 0 Then
t = t & NotRecodedChar
Else
t = t & Mid$(wWin, a, 1)
End If
End If
Next i
End If

If Dest = Win Then
Recode = t
Else
Select Case Dest
Case Koi: ss = wKoi
Case Dos: ss = wDos
Case Iso: ss = wIso
End Select
For i = 1 To Len(Char)
ch = Mid(t, i, 1)
If Asc(ch) < 128 Then
tt = tt & ch
Else
a = InStr(1, wWin, ch, vbBinaryCompare)
If a = 0 Then
tt = tt & NotRecodedChar
Else
tt = tt & Mid$(ss, a, 1)
End If
End If
Next i
Recode = tt
End If
End Function
code
0
0 / 0 / 0
Регистрация: 12.03.2008
Сообщений: 21
17.03.2008, 13:39  [ТС] 8
}{ай!
спасибо ОГРОМНОЕ за исходник... очень благодарен

а если я не знаю исходной кодировки (, то мне перебором каким-нибудь подобным можно поковыряться в строке после перекодировки? че бы понять, прально ли я кодировку изменил или нет... ища 'кривые' символы...

все это надо мне для следующего:
я извлекаю с помощью функций WinInet API(раньше пытался с помощью Inet, но для юзания в длл он слишком кривоват, че-то не так отрабатывал, хотя в exe приложении все нормально работал), весь html по урлу, но так как текст не всегда в той кодировке, кот. надо, а надо виндовую, то приходиться извращаться..

кстати в заголовке http возвращается какая-нить инфа, в какой кодировке текст?
0
0 / 0 / 0
Регистрация: 16.02.2008
Сообщений: 17
17.03.2008, 19:31 9
кодировка иногда указывается в заголовке
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
0
2 / 2 / 1
Регистрация: 30.07.2007
Сообщений: 206
17.03.2008, 22:25 10
попробуй пример: 'Определить кодировку текста (Dos или Win)' на http://sharig.webzone.ru/category/work10_txt.htm#06
0
0 / 0 / 0
Регистрация: 12.03.2008
Сообщений: 21
18.03.2008, 09:12  [ТС] 11
вау...заработало..

в http хедере возвращается инфа в какой кодировке страница, от сюда вывод, мы просто ее определяем, либо instr либо через регулярные вырезаем, и затем рекодим если надо...
за примеры спасибо..
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.03.2008, 09:12

Кодировка KOI8
Поможете, кто-нибудь разбирается в этом? Какое количество памяти занимает строка (без кавычек)...

Idhttp - Кодировка KOI8-R
Доброе утро. Возникли проблемы по поводу получение кода с сайта в кодировке KOI-8R, через get...

Кодировка koi8-r в питоне
Написал скрипт, залил на север(ос debian, стандартная кодировка koi8-r). И при попытке запуске...

Сбилась кодировка файлов при переносе их с Win XP на Win 7
Перешёл на 7-ку.Перенёс с XP файлы, которые создавались с помощью MathType 6.7. Но вот незадача-...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru