android機での%エンコード文字列渡しについて
初めて投稿させていただきます。よろしくお願いいたします。
現在、東芝TEC製プリンタへ印刷をするために、東芝TEC製アプリへ印刷内容を渡す処理を作成しています。
外部コールにて「アプリ名、枚数等、データ」という構成で呼び出しているのですが、
その際、データ部は「RFC3986の規定に従いパーセントエンコーディング」することとなっています。
外部コール後に確認ウインドウを表示するときちんと%が入っているのですが、
東芝TECアプリに到達した時点で%が落ちてしまっています。
%%、¥%、asciichr(37)、%%%、/%、は試してみたのですが、状態変わらずでした。
「アプリ名、枚数等」の命令文はきちんと到達しており、空白の紙送りは行われます。
%のついた文字をそのままmagic外へ出す方法、もしくは何かいい方法はありませんでしょうか。
httpcall、httppostも試してみたのですが、東芝アプリがそもそも起動してくれませんでした。
自分の圧倒的なスキル知識不足を自覚しておりますが、なにとぞ宜しくお願い致します。
-
はじめまして :D
なーんとなくですが
たとえば「ウィキペディア」を、各種の文字コードを用いてパーセントエンコーディングで符号化すると以下のようになる。
- Shift_JIS - %83E%83B%83L%83y%83f%83B%83A
- EUC-JP - %A5%A6%A5%A3%A5%AD%A5%DA%A5%C7%A5%A3%A5%A2
- UTF-8 - %E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2
どれ代入してもダメっぽいですか;;?
-
ありがとうございます。
試しましたところ、以下のようになりました。
・Shift_JIS - %83E%83B%83L%83y%83f%83B%83A
→83B83y83B〇(文字化け)A
・EUC-JP - %A5%A6%A5%A3%A5%AD%A5%DA%A5%C7%A5%A3%A5%A2
→A6A3ADDAC7A3A2
・UTF-8 - %E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2
→ 82E3A382E39A83E3A382〇(文字化け)
最初の説明不足だったのですが、エンコードは現段階ではmagic内で行っておらず、
{C|}{D2250,1000,2230|}{PC000;0207,0161,10,20,K,+00,00,B,J0000,+0000000000,P1|}{RC000;testdata|}
というコマンドを
%7bC%7c%7d%7bD2250%2c1000%2c2230%7c%7d%7bPC000%3b0207%2c0161%2c10%2c20%2cK%2c%2b00%2c00%2cB%2cJ0000%2c%2b0000000000%2cP1%7c%7d%7bRC000%3btestdata%7c%7d
と変換しておき、
tecbcp:///tpcl?printnumber=0002;rotation=0;data=%7bC%7c%7d%7bD2250%2c1000%2c2230%7c%7d%7bPC000%3b0207%2c0161%2c10%2c20%2cK%2c%2b00%2c00%2cB%2cJ0000%2c%2b0000000000%2cP1%7c%7d%7bRC000%3btestdata%7c%7d
という文字列で渡そうとしています。
これをシングルクォートで囲って外部コール、OSコマンドで呼んでいます。
後出しになってしまい、申し訳ありません。
よろしくお願い致します。
-
ご助言ありがとうございます。
magicの動作としてではなく、androidの動作としてでしたら、
東芝TEC製サンプルアプリから、東芝TEC製印刷アプリへ、%のついた文字列を渡し、印刷をすることはできています。
(また後出し情報で申し訳ありません)
先の具体例を記載させていただきます。
「tecbcp:///tpcl?printnumber=0002;rotation=0;data=%7bC%7c%7d%7bD2250%2c1000%2c2230%7c%7d%7bPC000%3b0207%2c0161%2c10%2c20%2cK%2c%2b00%2c00%2cB%2cJ0000%2c%2b0000000000%2cP1%7c%7d%7bRC000%3btestdata%7c%7d」
という文字列が届くことを期待しているのですが、
「tecbcp:///tpcl?printnumber=0002;rotation=0;data=7c7bD22502c22307d3b02072c102cK2b002cB2c2cP17d3btestdata7d」
という内容が到達します。
宜しくお願い致します。
-
サポートへ問い合わせるべき内容なんですね、ありがとうございます。
'%'&'7bC'&'%'&'7c'&'%'&'7d'試してみました。
(文章の最後まで同様の処理をしました。)
外部コールをしている際は両サイドをシングルクォートで囲っていますので、
'tecbcp:///tpcl?printnumber=0002;rotation=0;data='%'&'7bC'&'%'&'7c'&'%'&'7d' ①
これだと構文エラーになるため、
'tecbcp:///tpcl?printnumber=0002;rotation=0;data='&'%'&'7bC'&'%'&'7c'&'%'&'7d' ②
として実行しました。
②は先の書き込みと同じ内容となりました。
①をそのまま実行したところ、data=以降が欠落してしまいました。
ご助言ありがとうございます。
よろしくお願い致します。
-
ありがとうございます。
結果は最後の一文字が違うものの、%は落ちていました。
最後の一文字が}だったので、勝手にデコードされたのだと思い、
エンコード前の{C~を送ったら、プリンタでエラー。
%が1つだけだった場合、うまく送れましたが、2つ以上ではだめでした。
式エディタの中で、%の前で改行をしてもダメでした。
よろしくお願い致します。
-
返信遅くなってしまいすみません。
%%はだめでした。
-
ありがとうございます。
昨日e-サポにもこの内容をまとめたものを問い合わせました。
結果が出ましたらこちらに転載したいと思います。
(していいのでしょうか。)
-
> (していいのでしょうか。)
サポートセンターは有料サービスですので、無許可での転載はまずいと思います。このフォーラムのトップメニューに「管理者への問い合わせ」という項目がありますので、そこで確認されたらよろしいかと思いますよ。
-
はい、ありがとうございます。
確認してみます。
サインインしてコメントを残してください。
コメント
9件のコメント