Slide 35
Slide 35 text
4. Shift̲JIS
文字列を渡す
(
解決
)
npm install encoding‐japanese
var _request = Module.cwrap( // DLLのrequest()関数
'request', 'number', ['number', 'number']);
var requestStr = "こんにちは";
// intArrayFromStringではダメだった
var unicodeReq = Encoding.stringToCode(requestStr);
var sjisReq = Encoding.convert(unicodeReq, 'SJIS', 'UNICODE');
var req = allocString(sjisReq); // 文字列メモリ確保
var len = allocLong(req.size); // 文字列長メモリ確保
var resPtr = _request(req.ptr, len.ptr); // request()!
var resHeap = new Uint8Array( // 応答文字列のヒープの参照
Module.HEAPU8.buffer, resPtr, len.heap[0]);
// intArrayToStringはOK
var sjisResStr = Module.intArrayToString(resHeap);
Module._free(len.ptr); Module._free(resPtr); // freeする
var sjisRes = Encoding.stringToCode(sjisResStr);
var unicodeRes = Encoding.convert(sjisRes, 'UNICODE', 'SJIS');
var response = Encoding.codeToString(unicodeRes);