Думая NSIS плагин развития вызвало

  расширение NSIS DLL поддерживает структуру синтаксиса общего программирования

#include <windows.h> 
#include <stdio.h> #define FORCE_SWITCH "/ СИЛЫ"
 #define NOSAFE_SWITCH "/ NOSAFE"
 #define MAX_STRLEN 1 024 / * NSIS структура стека * / 
ЬурейеЕ структура _stack_t {
     структура     _stack_t * следующий;
    голец         текст [MAX_STRLEN]; 
} Stack_t; 
stack_t             ** g_stacktop;
символ             * g_variables; 
неподписанных INT     g_stringsize; 
HINSTANCE g_hInstance; #define EXDLL_INIT () \







{\ 
    G_stacktop         = stacktop; \ 
    G_variables         = переменные; \ 
    G_stringsize     = string_size; \ 
} 

// Функция: Удаляет элемент из вершины стека NSIS и помещает его в буфер 
INT popstring ( символ * строка) 
{ 
    stack_t * й; 

    если (! g_stacktop || * g_stacktop) возвращение  1 ; 

    е = (* g_stacktop); 
    lstrcpy (улица, е -> текст);
    * g_stacktop = th->следующий; 
    GlobalFree ((HGLOBAL) -й); 

    вернуться  0 ; 
} 

// Функция: Добавляет элемент в верхней части стека NSIS 
пустот pushstring ( Const  символ * ул) 
{ 
    stack_t * й; 

    если (g_stacktop!) возвращение ; 
    
    е = (stack_t *) GlobalAlloc (GPTR, SizeOf (stack_t) + g_stringsize); 
    lstrcpyn (й -> Текст, ул g_stringsize); 
    й -> следующая = * g_stacktop; 
    
    * g_stacktop = й; 
} 

недействительным__declspec (dllexport) Расшифровать (HWND hwndParent, INT string_size, 
                                       символ * переменные, stack_t ** stacktop) 
{ 
    символ                 string_to_decode [MAX_STRLEN] = "" ;
    символ                 string_decoded [MAX_STRLEN] = "" ;
    символ                 длина [ 16 ] = "" ; 

    EXDLL_INIT (); 
    { 
        Popstring (string_to_decode); 
       popstring (длина); 

    
        pushstring (string_decoded);    
    } 
}

BOOL WINAPI DllMain (HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved) 
{ 
    g_hInstance = hInst; 

    вернуть TRUE; 
}

 

   Так как компьютерный win10, NSIS кодируются с использованием формата UNICODE, и в приведенном выше примере при условии , NSIS plugin-common.hиспользуемыми являются char, но неwchar_t  

Что приводит к DLL параметров , передаваемых для импорта только получить символ ( исследование FUCK в течение длительного времени, благодаря помощи старых коллег )

Решение:

  1. Плагин код charизменен wchar_t.
  2. Добавлен NSI сценарий Unicode True. (Если вы хотите использовать Unicode, но сценарий использует многобайтный)
  3. Вы должны быть сгенерированы штепсель в каталог длл под НСИ Plugins\x86-unicodeподкаталоге. (Если сценарий с использованием Unicode, подкаталог, в зависимости от обстоятельств может быть, может не существовать)

 

 

  ANSI: В первый раз, компьютер может представлять только ASCII код 256 символов (включая символы управления), набор символов достаточно букв, причем диапазон кодирования мы можем увидеть символы на клавиатуре составляет от 32 до 126 (буквы, цифры, символы и т.д.). Но он сказал, китайские иероглифы, японские, корейские, не вполне достаточно хорошо, Есть более 3000 китайских иероглифов часто используемых слов.

Но китайский народ должен использовать компьютер печатать, так китайцы придумали первый китайский набор символов GB2312 (GBK позднее расширенная), GB2312 практика, код ASC в диапазоне от 128 до 255 этого интервала переадресован смотрите, с два кода ASC указывает на характер, такое представление доступно кодирование диапазона 0x8080 до 0xFFFF в шестнадцатеричном, который был бы в состоянии представить более десяти тысяч символов, достаточно. [Примечание: Фактическая так бесполезно, диапазон GBK является 8140-FeFe]

  В то время, компьютерные технологии разработаны, участвовать в их собственных странах, таких как Тайвань, а также участвовать в другой набор, называемый BIG5 (обычно известен как: Big-5), с материком не то же самое, но этот метод похож, как является 0x80 до 0xFF этого интервала.

Затем японский язык (кодирующий JIS), корейский и так же каждый делает свое дело.

  Coding разделы этих стран накладываются друг на друга, но одни и те же символы (например, некоторые символы существуют в упрощенный и традиционный, японский, китайские иероглифы в то же время) существуют различные коды, это сбивает с толку, не так ли? Но также , чтобы сделать с. Кодировать другой причиной многих неприятностей, таких как веб - страницу, если вы не знаете , что он закодирован, то вам может быть трудно определить , что отображается, символ может быть упрощена материковые / Тайвань Традиционные китайские / японские иероглифы, но полностью разные слова. Так что, если некоторые из очень старого программного обеспечения, вы , возможно, слышали о китайской / японской версии и т.п., соответствующая версия работает только на соответствующей системе.

  Позже, развитие операционной системы слишком сложно, потому что это означает , что различные версии языка, чтобы быть повторно закодированы. Таким образом, изобретение Юникода. Unicode это то, что все символический язык на Земле должен, все с единым набором символов для представления действительно уникальный код.

UTF-8
    популярности Интернета, настоятельно появится унифицированная кодирование. UTF-8 является наиболее широко используемым использованием Unicode в Интернете. Другие реализации дополнительно содержат UTF-16 (символ два байта или четыре байта), и UTF-32 (четыре байта , представленного характер), но , по существу , не в Интернете. Повторите, здесь отношения, UTF-8 Unicode является одним из реализации.

UTF-8 самая большая особенность состоит в том , что это кодирование с переменной длиной. Он может быть от 1 до 4 байт одного символа, длина байта варьируется в зависимости от символа.
правила кодирования UTF-8 очень просто, только два:

1) Для отдельных символов байт, набор байта 0, задняя 7 кодового символа Unicode. Таким образом, для английского алфавита, UTF-8 кодирование и ASCII коды совпадают.

2) символ п байт (п> 1), первые п битов первого байта установлены в 1, п + 1 бит установлен в 0, первые два байта задней комплект 10 равномерно. Остальные биты не упоминаются, все кодовый символ Unicode.

 

 

Воспроизводится в: https: //www.cnblogs.com/lizhanzhe/p/11019631.html

рекомендация

отblog.csdn.net/weixin_34409357/article/details/93199548