Index: 残局文料/lua_lib/u8_to_a.lua ================================================================== --- 残局文料/lua_lib/u8_to_a.lua +++ 残局文料/lua_lib/u8_to_a.lua @@ -1,40 +1,40 @@ -local ffi = require("ffi") -local d_4 = {} -ffi.cdef([[ -typedef unsigned int UINT; -typedef unsigned long DWORD; -typedef wchar_t WCHAR; -typedef WCHAR* LPWSTR; -typedef wchar_t* LPCWCH; -typedef char CHAR; -typedef CHAR* LPSTR; -typedef const char* LPCCH; -typedef int BOOL; -typedef BOOL* LPBOOL; -int MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCCH lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar); -int WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWCH lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cchMultiByte, LPCCH lpDefaultChar, LPBOOL pfUsedDefaultChar); -]]) -d_4.CP_ACP = 0 -d_4.CP_UTF8 = 65001 ---~ 算机_基统_窗群 -function d_4.m2w(input, o1) - local wlen = ffi.C.MultiByteToWideChar(o1 or d_4.CP_ACP, 0, input, #input, nil, 0) - local wstr = ffi.new("wchar_t[?]", wlen + 1) - ffi.C.MultiByteToWideChar(o1 or d_4.CP_ACP, 0, input, #input, wstr, wlen) - return wstr, wlen -end -function d_4.w2m(wstr, wlen, o1) - local len = ffi.C.WideCharToMultiByte(o1 or d_4.CP_ACP, 0, wstr, wlen or -1, nil, 0, nil, nil) - local str = ffi.new("char[?]", len) - ffi.C.WideCharToMultiByte(o1 or d_4.CP_ACP, 0, wstr, wlen or -1, str, len, nil, nil) - return ffi.string(str, len) -end ---~ 通用大字集_八位 -function d_4.u8_to_a(input) - return d_4.w2m(d_4.m2w(input, d_4.CP_UTF8)) -end -function d_4.a_to_u8(input) - local k1, k2 = d_4.m2w(input) - return d_4.w2m(k1, k2, d_4.CP_UTF8) -end -return d_4 +local ffi = require("ffi") +local d_4 = {} +ffi.cdef([[ +typedef unsigned int UINT; +typedef unsigned long DWORD; +typedef wchar_t WCHAR; +typedef WCHAR* LPWSTR; +typedef wchar_t* LPCWCH; +typedef char CHAR; +typedef CHAR* LPSTR; +typedef const char* LPCCH; +typedef int BOOL; +typedef BOOL* LPBOOL; +int MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCCH lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar); +int WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWCH lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cchMultiByte, LPCCH lpDefaultChar, LPBOOL pfUsedDefaultChar); +]]) +d_4.CP_ACP = 0 +d_4.CP_UTF8 = 65001 +--~ 算机_基统_窗群 +function d_4.m2w(input, o1) + local wlen = ffi.C.MultiByteToWideChar(o1 or d_4.CP_ACP, 0, input, #input, nil, 0) + local wstr = ffi.new("wchar_t[?]", wlen + 1) + ffi.C.MultiByteToWideChar(o1 or d_4.CP_ACP, 0, input, #input, wstr, wlen) + return wstr, wlen +end +function d_4.w2m(wstr, wlen, o1) + local len = ffi.C.WideCharToMultiByte(o1 or d_4.CP_ACP, 0, wstr, wlen or -1, nil, 0, nil, nil) + local str = ffi.new("char[?]", len) + ffi.C.WideCharToMultiByte(o1 or d_4.CP_ACP, 0, wstr, wlen or -1, str, len, nil, nil) + return ffi.string(str, len) +end +--~ 通用大字集_八位 +function d_4.u8_to_a(input) + return d_4.w2m(d_4.m2w(input, d_4.CP_UTF8)) +end +function d_4.a_to_u8(input) + local k1, k2 = d_4.m2w(input) + return d_4.w2m(k1, k2, d_4.CP_UTF8) +end +return d_4