HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
0426
kjwave文字コードの変換を自分で行いたい。4解決


kjwave

リンク

2018/4/26(Thu) 21:44:08|NO.84168

現在、HSPのmesbox命令でHTMLエディタを作成中です。適当な文字を入れてHTMLファイルに保存する時に文字コード(utf-8やeuc-jp等)に出来るだけdllを使わないで変換したいです。やり方を知っている方、お願いします。 (わがままですいません。)   



この記事に返信する


あらや

リンク

2018/4/26(Thu) 22:18:33|NO.84170

面倒ですが一番シンプルな方法は自分でコード変換テーブルを作成することですかね。

例)
SJIS 0x1234 ⇔ EUC 0x4321 (数値は適当です)
SJIS 0x1234 ⇔ UTF-8 0x3214 

こんな感じに
配列変数を2バイト分で65536を文字セット別に用意して
それぞれに数値を入れておくような感じです。

変換の際に全文字セットの全ての組み合わせを用意すると大変なので
UTF-16あたりをベースにして

SJISからEUCに変換するときは、
SJIS → UTF-16 → EUC
という形にすると多少用意するテーブルの数が減って楽になります。



もう1つの方法はAPI(kernel32.dll)のMultiByteToWideCharとWideCharToMultiByteを
使う方法もあります。
これはかなり簡単に変換できますがEUCに関しては、どうやらエラー(非対応)っぽいです。



GENKI

リンク

2018/4/26(Thu) 23:54:02|NO.84172

文字と各エンコードでの値は、インターネット上を検索すると対応表がでてくるので、対応表を自作するのも一つの手です。
しかし、便利な命令も用意されているので活用することをお勧めします。

sjisとutf-16の変換なら標準命令が用意されています。

;あ ;SJIS: 82A0 ;UTF-8: E38182 ;UTF-16: 3042 ;SJIS sjis = "あ" s = peek(sjis, 0)<<8 | peek(sjis, 1) mes strf("JIS 0x%04X", s) ;SJIS -> unicode cnvstow utf16, sjis mes strf("UTF-16 0x%04X", utf16) ;unicode -> SJIS mes cnvwtos(utf16)

utf8との変換ならencode.asというモジュールが標準で入っているのでこれを活用できます。

;あ ;SJIS: 82A0 ;UTF-8: E38182 #include "encode.as" sjis = "あ" ;SJIS -> UTF8 sjis2utf8n utf8, sjis mes utf8 s = peek(utf8, 0)<<16 | peek(utf8, 1)<<8 | peek(utf8, 2) mes strf("UTF-8 0x%04X", s) ;UTF8 -> SJIS sjis = utf8n2sjis(utf8) mes sjis s = peek(sjis, 0)<<8 | peek(sjis, 1) mes strf("SJIS 0x%04X", s)
encode.asはとてもいい機能だと思うのですが、マニュアルにはほとんど記載がありません。
使い方はこちらを参考にしてください。
https://wiki.hsp.moe/Module%EF%BC%8F%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89%E5%A4%89%E6%8F%9B%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB.html


> 出来るだけdllを使わないで変換したいです。
ちなみに理由はdish対応のためですか?それとも配布の際に余計なファイルを付けたくないとかですか?



kjwave

リンク

2018/5/21(Mon) 21:16:43|NO.84466

ありがとうございました。
encode.asやその他の関数を使い、試してみます。

また、JISの変換方法も分からないので
よろしければお願いします。



GENKI

リンク

2018/5/21(Mon) 22:30:28|NO.84467

これでよければ参考にしてみてください。

encode.asのヘルプ | GHP(仮)
http://mclab.uunyan.com/lab/hspneta/neta014.htm



ONION software Copyright 1997-2023(c) All rights reserved.