Автор Тема: Encoding UDF - Библиотека для работы с кодировками строк  (Прочитано 104626 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7806

  • Автор темы
  • Репутация: 2279
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Latoid  [?]
Цитировать
Функция _WhatIsCyrillicANSIEncoding определяет ANSI кодировки: KOI8-R, WINDOWS-1251, IBM-866, ISO-8859-5
Вот не помешало бы определять тип кодировки ISO-8859-N, где N это и есть тип.
Например для такой строки:
Инструкция по установке.htmфункция возвращает ISO-8859-5, хотя это ISO-8859-1.


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Русское сообщество AutoIt

Re: Encoding UDF - Библиотека для работы с кодировками строк
« Ответ #15 Отправлен: Май 17, 2010, 16:32:14 »

Оффлайн Latoid [?]

  • Новичок
  • *
  • Сообщений: 92
  • Репутация: 11
    • Награды
Latoid  [?]
Цитировать
Функция _WhatIsCyrillicANSIEncoding определяет ANSI кодировки: KOI8-R, WINDOWS-1251, IBM-866, ISO-8859-5
Вот не помешало бы определять тип кодировки ISO-8859-N, где N это и есть тип.
Например для такой строки:
Инструкция по установке.htmфункция возвращает ISO-8859-5, хотя это ISO-8859-1.

Что-то не пойму. Вот здесь http://ru.wikipedia.org/wiki/ISO-8859 из 16 ISO кодировок кириллическая только одна указана ISO 8859-5 Или название файла не по-русски? Если так, то функция изначально разрабатывалась для распознания заведомо русского текста

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7806

  • Автор темы
  • Репутация: 2279
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Latoid  [?]
Цитировать
из 16 ISO кодировок кириллическая только одна указана ISO 8859-5
Ну это вроде в UTF-8 изначально записано.

Цитировать
Или название файла не по-русски?
После раскодирования по русский :)
Вот так получается раскодировать:
Код: AutoIt [Выделить]
StringFromASCIIArray(StringToASCIIArray("Инструкция по установке.htm", 0, Default, 0), 0, Default, 2)

на выходе имеем:
Инструкция по установке.htm

Оффлайн Latoid [?]

  • Новичок
  • *
  • Сообщений: 92
  • Репутация: 11
    • Награды
Latoid  [?]
Цитировать
из 16 ISO кодировок кириллическая только одна указана ISO 8859-5
Ну это вроде в UTF-8 изначально записано.

Цитировать
Или название файла не по-русски?
После раскодирования по русский :)
Вот так получается раскодировать:
Код: AutoIt [Выделить]
StringFromASCIIArray(StringToASCIIArray("Инструкция по установке.htm", 0, Default, 0), 0, Default, 2)

на выходе имеем:
Инструкция по установке.htm

А в какой UDF эти замечательные функции обретаются )
StringToASCIIArray
StringFromASCIIArray

UPD. Похоже, пора AutoIt мне обновлять )
« Последнее редактирование: Октябрь 30, 2011, 04:43:25 от Latoid »

Русское сообщество AutoIt

Re: Encoding UDF - Библиотека для работы с кодировками строк
« Ответ #18 Отправлен: Май 20, 2010, 16:56:51 »

Оффлайн Kaster [?]

  • Бритва, Бритва Оккама
  • Глобальный модератор
  • *
  • Сообщений: 4020
  • Репутация: 622
  • Пол: Мужской
  • Мой Аватар, он лучший самый
    • Награды
  • Версия AutoIt: 3.3.14.0
OffTopicLatoid
это натив

Оффлайн Latoid [?]

  • Новичок
  • *
  • Сообщений: 92
  • Репутация: 11
    • Награды
OffTopicLatoid
это натив

OffTopicСообразил. Autoit мне надо обновлять

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7806

  • Автор темы
  • Репутация: 2279
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Вообще хотелось бы иметь под рукой универсальную функцию, которая могла бы определять любой тип кодировок, и соответственно на её основе можно было бы сделать функцию для конвертирования указанной кодировки в любую, и обратно.

Оффлайн Latoid [?]

  • Новичок
  • *
  • Сообщений: 92
  • Репутация: 11
    • Награды
Вообще хотелось бы иметь под рукой универсальную функцию, которая могла бы определять любой тип кодировок, и соответственно на её основе можно было бы сделать функцию для конвертирования указанной кодировки в любую, и обратно.
Покумекаю в воскресенье. Раньше не смогу (

Русское сообщество AutoIt

Re: Encoding UDF - Библиотека для работы с кодировками строк
« Ответ #22 Отправлен: Май 20, 2010, 17:09:06 »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7806

  • Автор темы
  • Репутация: 2279
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Latoid  [?]
Цитировать
Покумекаю в воскресенье
Кстати есть онлайн сервис которвй умеет автоматом определять кодировку и конвертировать, может как то можно это использовать.

Оффлайн snoitaleR [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 854
  • Репутация: 222
  • Пол: Мужской
    • Награды
CreatoR
Подскажи, пожалуйста, почему данное перекодирование не дает в результате "Пробное письмо"... Проверял на указанном онлайн-сервисе - там получается...

Код: AutoIt [Выделить]
 #Include <Encoding.au3>
 MsgBox(0,"",_Encoding_KOI8To1251(_Encoding_Base64Decode("8NLPws7PxSDQydPYzc8")))
 

Главное в жизни человека - это отношение...

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7806

  • Автор темы
  • Репутация: 2279
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
snoitaleR  [?]
Цитировать
почему данное перекодирование не дает в результате "Пробное письмо"
У меня выдаёт «"Пробное пись» ;D
Также и на сервисе.

Оффлайн snoitaleR [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 854
  • Репутация: 222
  • Пол: Мужской
    • Награды
CreatoR
Я бы посмеялся, но не до смеха... Тут какой-то казус...
Прикладываю скриншот...

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7806

  • Автор темы
  • Репутация: 2279
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
snoitaleR  [?]
Цитировать
Тут какой-то казус
Я поверял с тем что мне выдала функция _Encoding_Base64Decode, видимо в ней есть проблема...


Добавлено: Июль 20, 2010, 16:43:50
[?]
Цитировать
видимо в ней есть проблема
Проблема в длине возвращаемой строки, нужно добавить «+ 2» к «$Ret[0]».
« Последнее редактирование: Июль 20, 2010, 16:43:50 от CreatoR, Причина: Объединение сообщений »

Оффлайн ak40u [?]

  • Новичок
  • *
  • Сообщений: 33
  • Репутация: 7
    • Награды
* Декодер http://web.artlebedev.ru/tools/decoder/

* Можно добавить функцию конвертации cp1251 в utf8 и назад.
Взял с http://mihalytch.org.ua/programming/php/convert-cp1251-utf8.html

По ней вопрос:
Кодирование не всегда срабатывает, не могу понять почему.
(нажмите для показа/скрытия)
(нажмите для показа/скрытия)




(нажмите для показа/скрытия)

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2313
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
ak40u
А чем Вам не нравятся штатные функции Encoding.au3?
Код: AutoIt [Выделить]
#include <Encoding.au3>

$sString1251 = 'двери деревянные'
$sStringUTF8 = _Encoding_StringToUTF8($sString1251)
MsgBox(0, '', 'Оригинал: ' & $sString1251 & @LF & 'UTF8: ' & $sStringUTF8 & @LF & _
        '1251: ' & _Encoding_UTF8ToANSI($sStringUTF8))


PS
Ваша функция не работает и еще в ней 2 ошибки:
1. Не правильно $txt = StringReplace($in_arr,$out_arr,$txt), правильно
$txt = StringReplace ($txt, "searchstring/start", "replacestring" [, occurrence [, casesense]] )
2. StringReplace() не заменяет массивы. Надо так:
Код: AutoIt [Выделить]
;...
For $i = 0 To 65
    $txt = StringReplace($txt, $in_arr[$i], $out_arr[$i])
Next
;...

Например:
Код: AutoIt [Выделить]
Dim $aFirst[3] = ['1', '2', '3']
Dim $aSecond[3] = [' 11 ', ' 22 ', ' 33 ']
$sString = '231321'
For $i = 0 To 2
    $sString = StringReplace($sString, $aFirst[$i], $aSecond[$i])
Next
MsgBox(0, '', $sString)


PPS
В Примерах 1 и 2 у Вас тоже ошибка:
Код: AutoIt [Выделить]
;Не правильно:
$sHtml = "двери деревянные  <sample words>"
_Encoding_Cp1251ToUtf8 ($sHtml)
MsgBox(0,'',$sHtml)
;Правильно:
$sHtml = "двери деревянные  <sample words>"
$sHtml = _Encoding_Cp1251ToUtf8 ($sHtml)
MsgBox(0,'',$sHtml)

Закомментируйте строку
Код: AutoIt [Выделить]
;...
;_Encoding_Cp1251ToUtf8 ($sHtml)
;...

В Вашем примере - ничего не изменится.
« Последнее редактирование: Декабрь 19, 2010, 10:19:58 от madmasles »

Русское сообщество AutoIt

Re: Encoding UDF - Библиотека для работы с кодировками строк
« Ответ #29 Отправлен: Декабрь 19, 2010, 09:20:50 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
76 Ответов
76014 Просмотров
Последний ответ Август 09, 2016, 23:47:20
от BL_PENETRATOR
90 Ответов
42401 Просмотров
Последний ответ Август 01, 2014, 12:28:58
от k790
25 Ответов
28855 Просмотров
Последний ответ Январь 18, 2016, 02:21:12
от yrus
19 Ответов
14989 Просмотров
Последний ответ Февраль 05, 2010, 10:06:16
от Yashied
6 Ответов
7579 Просмотров
Последний ответ Июль 12, 2012, 23:54:46
от Viktor1703
3 Ответов
12086 Просмотров
Последний ответ Июнь 14, 2015, 18:48:07
от madmasles
0 Ответов
6860 Просмотров
Последний ответ Март 18, 2010, 14:57:53
от Yashied
140 Ответов
59929 Просмотров
Последний ответ Апрель 19, 2015, 02:43:50
от Broadcastic
6 Ответов
8303 Просмотров
Последний ответ Май 03, 2017, 15:09:33
от inververs
2 Ответов
2193 Просмотров
Последний ответ Август 22, 2013, 16:19:28
от sngr