![]() |
![]() |
![]() |
|
UTF в Симв Ø |
☑ | ||
---|---|---|---|---|
0
OlegKZ
20.12.05
✎
13:07
|
Привет всем!
Есть текстовой файл в UTF кодировке. Пользователю нужно оттуда вытащить некоторые данные и разместить из в таблице. Всё бы хорошо, но русский язык отображается не корректно. Есть ли готовый алгоритм перевода из УТФ в Симв? |
|||
1
smaharbA
20.12.05
✎
13:09
|
utf-8 или utf-16 ?
ADODB.Stream самое простое |
|||
2
OlegKZ
20.12.05
✎
13:18
|
(1)UTF-8
//Есть такое: из 1с в utf Функция СимвToUnicod(Код) // преобразует символ в код UTF Перем ВозврПарам; если (Код>=КодСимв("А"))и(Код<=КодСимв("Я")) тогда ВозврПарам = Симв(208)+Симв(144+Код-КодСимв("А")); ИначеЕсли Код>=КодСимв("Ё") тогда ВозврПарам = Симв(208)+Симв(129); ИначеЕсли (Код>=КодСимв("а"))и(Код<=КодСимв("п")) тогда ВозврПарам = Симв(208)+Симв(176+Код-КодСимв("а")); ИначеЕсли (Код>=КодСимв("р"))и(Код<=КодСимв("я")) тогда ВозврПарам = Симв(209)+Симв(128+Код-КодСимв("р")); ИначеЕсли Код>=КодСимв("ё") тогда ВозврПарам = Симв(209)+Симв(145); Иначе ВозврПарам = Симв(Код) конецесли; Возврат(ВозврПарам) КонецФункции // Как сделать обратное? |
|||
3
Gloom
20.12.05
✎
13:40
|
(2)см. (1)
|
|||
4
OlegKZ
20.12.05
✎
14:18
|
(1),(3) Можно подробнее о ADODB.Stream. Как это сделать?
|
|||
5
Gloom
20.12.05
✎
14:26
|
(4)
Держи примерчик: ================================= stream=createObject("adodb.stream"); stream.open(); stream.type=2;//adTypeText stream.loadFromFile(ПутьКФайлу); stream.charset="utf-8"; stream.position=3;//пропускаем Byte Order Mark message(stream.readText()); stream.close(); stream=""; |
|||
6
smaharbA
20.12.05
✎
14:38
|
a="qwertyuiopasdfghjklzxcvbnm1234567890-=!@#$%^&*()_+<>/\?йцукенгшщзхъфывапролджэячсмитьбю., ";
s=createobject("ADODB.Stream"); s.type=2; s.charset="utf-16"; S.Mode= 0; S.Open; S.LoadFromFile("работа с дипломом.doc"); Пока S.EOS=0 Цикл r=S.readtext(1); Если (Найти(a,r)>0) или (Найти(Врег(a),r)>0) или (r=Симв(10)) или (r=симв(9)) Тогда f=f+r; ИначеЕсли s=симв(12) Тогда f=f + РазделительСтрок; КонецЕсли; КонецЦикла;//С днем рождения! ;) Предупреждение(f); ... Это с фильтром, а можно вообще просто Type ФайлУТФ16>ФайлАСК |
|||
7
smaharbA
20.12.05
✎
14:40
|
+(6)
КомандаСистемы("Type ФайлУТФ16>ФайлАСК"); Ну а дальше сам... |
|||
8
smaharbA
20.12.05
✎
14:45
|
(7) Кажись накасячил, я тайпом из stdout беру, там выходит все аск, а так как в (7) небудет...
|
|||
9
OlegKZ
20.12.05
✎
14:45
|
(5) Спасибо. Переводит. А как сделать, чтоб это было как текстовый файл.
Текст=stream.readText(); КолСтр=Текст.КоличествоСтрок(); КолСтр=Текст.КоличествоСтрок(); {D:\LOCALBASE\BUСH2005\EXTFORMS\ИЗ_НДС_В_XLS.ERT(45)}: Значение не представляет агрегатный объект (КоличествоСтрок) |
|||
10
smaharbA
20.12.05
✎
14:48
|
(9) Ты чего безобразничаешь, тебеж в (5) все разом переводит
|
|||
11
Gloom
20.12.05
✎
14:48
|
(9)
Текст=stream.readText(); КолСтр=СтрКоличествоСтрок(Текст); Для счСтрок=1 По КолСтр Цикл ТекСтрока=СтрПолучитьСтроку(Текст,счСтрок); ... |
|||
12
OlegKZ
20.12.05
✎
14:54
|
Спасибо Вам ОГРОМНОЕ smaharbA и Gloom. Выручили.
|
|||
13
OlegKZ
20.12.05
✎
15:12
|
А можно тогда еще вопрос. Чтобы сделать обратное
stream.charset="dos"; так пойдет? |
|||
14
Gloom
20.12.05
✎
15:30
|
(13)Выражайся яснее...
|
|||
15
smaharbA
20.12.05
✎
15:30
|
s=createobject("ADODB.Stream");
s.type=2; s.charset="utf-16"; S.Mode= 3; S.Open; s.WriteText("Ла-Ла-Ла"); s.savetofile("2.txt",2); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |