Кириллические домены РФ в PunyCode

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Аватара пользователя
Art!P
новенький
Сообщения: 27
Зарегистрирован: 28.07.2012 14:37:53
Контактная информация:

Кириллические домены РФ в PunyCode

Сообщение Art!P »

Хочу (надо) домены в пуникод конвертить, но что-то сегодня у меня не очень получается.
Может есть у кого готовая либа?
Смотрю в строну дллки normaliz.dll функция IdnToAscii, но я не силен в Cи с MSDN.
Аватара пользователя
Ichthyander
энтузиаст
Сообщения: 701
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань
Контактная информация:

Сообщение Ichthyander »

А зачем для этого DLL? Этот Delphi код не пробовали для преобразования http://www.delphisources.ru/forum/showt ... hp?t=15745 ?
Аватара пользователя
Art!P
новенький
Сообщения: 27
Зарегистрирован: 28.07.2012 14:37:53
Контактная информация:

Сообщение Art!P »

Не хочет конвертить, вопросы отдает

Добавлено спустя 45 минут 47 секунд:
Сделал с normaliz.dll
статичное подключение длл

Код: Выделить всё

function IdnToAscii(Flags:dword;UnicodeChar:Pwidechar;CountChar:integer;
        ASCIIChar:Pwidechar;CountASCII:integer):integer; stdcall;

implementation

{$R *.lfm}

{ TForm1 }

function IdnToAscii(Flags:dword;UnicodeChar:Pwidechar;CountChar:integer;
      ASCIIChar:Pwidechar;CountASCII:integer):integer; stdcall; external 'normaliz.dll';


Функия конвертора

Код: Выделить всё

function ToPunyCode(str:String):string;
var
  a:WideString;
  b:array [0..255] of WideChar;
begin
  fillchar(b,255,#0);
  a:=UTF8Decode(str);
  IdnToAscii(0,Pwidechar(a),Length(a),b,256);
  result:=PWideChar(@b);
end;
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

http://tools.ietf.org/html/rfc3492 читаем и реализуем!
Аватара пользователя
Art!P
новенький
Сообщения: 27
Зарегистрирован: 28.07.2012 14:37:53
Контактная информация:

Сообщение Art!P »

Решил поднять этот старый топик.

Сейчас возникла необходимость конвертации домена в линуксе. В линуксах имеется аналогичная библиотека Libidn и консольное приложение на её основе idn
Сама либа при необходимости устанавливается (дебиане, убунта):

Код: Выделить всё

apt-get install libidn idn


На основе уже есть паскаль код http://zooplah.farvista.net/en/programm ... idn.tar.xz
сайт автора http://zooplah.farvista.net/en/programming/pascal/offerings.xhtml

Подключил к проекту и прекрасно конвертирует :D
Ответить