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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
1105
(´・ω・`)UTF-16を変換したい4解決


(´・ω・`)

リンク

2014/11/5(Wed) 19:04:35|NO.65928

UTF-16の文字(\uXXXXのような文字)をHSPが対応している文字に変換したいのですが、
どうすれば出来るのでしょうか?

nkfcnvで出来ると思うのですが、NKF変換オプションに何を指定していいかわかりません。
とりあえずW16等色々試しましたが、上手く行きませんでした。

指定するオプション、もしくは変換する方法を教えて頂けないでしょうか?

サンプル文章

\u30c6\u30b9\u30c8\u30e1\u30c3\u30bb\u30fc\u30b8\u3067\u3059\uff01 HSP\u7528\u306e\u3002



この記事に返信する


(´・ω・`)

リンク

2014/11/5(Wed) 19:29:53|NO.65930


#include "hspinet.as" //変換前="\u30c6\u30b9\u30c8\u30e1\u30c3\u30bb\u30fc\u30b8\u3067\u3059\uff01 HSP\u7528\u306e\u3002"//\が1つだけのバージョン。もし\\だと不都合な場合、お使いください。 変換前="\\u30c6\\u30b9\\u30c8\\u30e1\\u30c3\\u30bb\\u30fc\\u30b8\\u3067\\u3059\\uff01 HSP\\u7528\\u306e\\u3002" nkfcnv 変換後,変換前,"-g",-1,-1 mes 変換前 mes 変換後

書き忘れました。変換に使用しているソースコードです。



Flat

リンク

2014/11/5(Wed) 19:44:09|NO.65931


#module #defcfunc cnvswtos str a, local b, local c, local d, local e sdim b, strlen(a)+10 b = a c = 0 sdim d, strlen(a) e = 0 repeat if c >= strlen(a) : break if wpeek(b,c) == 0x755C { wpoke d, e, int("$"+strmid(b,c+2,4)) c += 6 } else { wpoke d, e, peek(b,c) c++ } e += 2 loop return cnvwtos(d) #global 変換前 = "\\u30c6\\u30b9\\u30c8\\u30e1\\u30c3\\u30bb\\u30fc\\u30b8\\u3067\\u3059\\uff01 HSP\\u7528\\u306e\\u3002" 変換後 = cnvswtos(変換前) mes 変換前 mes 変換後
エラーチェックとかしてませんが、正しい入力なら動作はします。
今回どうなるのかわからなかったので\記号のエスケープ処理は入れてませんが、
もし\記号がエスケープされて\\になる場合はソースコードを一部修正する必要があります。



Flat

リンク

2014/11/5(Wed) 19:47:04|NO.65932

書き忘れましたが、\u30c6の他に\U30c6(uが大文字)の場合もあるなら、
ソースコードに別の修正を加える必要があります。



(´・ω・`)

リンク

2014/11/5(Wed) 20:06:38|NO.65933

全て標準命令でunicodeを通常文字列に変換できるとは・・・
ググってばかりでリファレンスで調べていませんでした・・・

非常にわかりやすいソースコードを書いて頂き、
本当にありがとうございました。



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