みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
Windows 環境FM17
フィールド1[テキスト]に
テスト-0000080001-20181009161017-35--02-9999-.pdf
という文字が入力されています。
電子カルテで利用しているため外部通信は出来ないのでPHPを使ってQRコードが作成できるツールに引数渡ししてWebビューアーを使いQRコードを作成しています。
ファイルメーカーのフィールドの文字エンコードがUTFのため、
EPSONのスキャナ:Document Capture Proで読み取ると、テストの部分が文字化けします。(日本語以外は問題なし)
フィールド1[テキスト]を文字エンコード[SHIFT_JIS]に置き換えることは出来ないでしょうか?
よろしくお願いします。
Offline
文字列をテキストでshift-JISでエクスポートして、それをPHPで読みこませるのが一番手軽では。
Offline
「QRコードが作成できるツール」の方で、SHIFT_JISでQRコードを作成するようにしないとイケないのでは...。
Offline
qb_dp様の言うとおり、QRコードを作成する側がSHIFT-JISで作成してくれれば、解決だと思います。
ローカルだけで簡単にQRコードをSHIFT-JISで作成するおすすめなプログラムなど知っている方いれば教えて下さい。
Offline
>#4『ローカルだけで簡単にQRコードをSHIFT-JISで作成するおすすめなプログラムなど知っている』
「なでしこ」FileMakerプラグインとか、→ https://nadesi.com/top/index.php?FileMa … 4%E3%83%B3
Offline
試しては無いですが、SHIFT-JISもイケそうな...。
iPad/iPhone 向けカスタム App 無料サンプル | FileMaker — An Apple Subsidiary
https://fmgo.jp/detail.php?recid=577
以下で紹介している「DotNetBarcode」がおそらくSHIFT-JISです。
FileMakerで一般公開されている「dll」を使用する。QRコード、JANコードなどを作成
http://qbxxdp.blogspot.com/2016/08/filemakerdll.html
Offline
いろいろ試した結果です。
Webビューアーを使いQRコードを作成するデータ部分がShift_JISを指定してもUTF-8になる仕様みたいです。
"data:text/html,
<html>
<head>
<META HTTP-EQUIV=" & "\"Content-type\"" & " CONTENT=\"" & "text/html; charset=Shift_JIS\"" & ">" &
"</head>
<body style='border: 0; margin: 0'>
<img src=
'http://192.168.50.1/qr/php/qr_img.php?d=" & "テスト予診票-0000080001-20181009102711-35--02-admin-.pdf" & "&e=M&s=2" &
"'
/>
</body>
</html>"
このデータ部分
「テスト予診票-0000080001-20181009102711-35--02-admin-.pdf」
をSHIFT_JISに変換 文字コード
%83e%83X%83g%97%5C%90f%95%5B-0000080001-20181009102711-35--02-admin-.pdf
に変換して先ほどのデータ部分に入れると適切に日本語が表示されました。
なのでFMのフィールドデータをあらかじめSHIFT_JISに変換する必要がありそうです。
スマホでは簡単に変換してくれるのにやっかいです。
今から、qb_dp様の方法試してみます。
ありがとうございます。
Offline
ハイフンの前の、"テスト予診票" のみをエンコードすればいいのでしたら、
Let(
[
$txt = HexEncode ( TextEncode ( text ; "shift_jis" ; 1 ) ) ;
$pos = Length ( $txt ) - 1 ;
$fnc=
"Case ( $pos < 0 ; $txt ;
Let(
[
$txt = Replace ( $txt ; $pos ; 0 ; \"%\" ) ;
$pos = $pos - 2
];
Evaluate($fnc))
)"
];
Evaluate($fnc)
)
としておくといいかも。
テスト予診票
は、
%83%65%83%58%83%67%97%5C%90%66%95%5B
と変換されます。これを埋め込めばいいでしょう。
Last edited by Shin (2018-10-11 13:41:00)
Offline
utf-8とは違ってshift_jisの文字コードは2桁区切りとは限らないので、
urlエンコード変換式は、1文字づつ切り出しurl変換するのが良いかな、
Let([
$txt=日本語テキスト部;
$i=0;
$res="";
$fnc=
"Case($i=Length($txt); $res;
Let([
$i=$i+1;
#chr=Middle($txt; $i; 1);
$res=$res & ""%"" & HexEncode(TextEncode(#chr; ""shift_jis""; 1));
]; Evaluate($fnc))
)"
];
Evaluate($fnc)
)
(なお、式の動作検証は行っていません。)
Offline
おぉ!
HexEncode ( TextEncode ( text ; "shift_jis" ; 1 ) )
こんな使い方ができたんですね。
Offline
Hiroさんの最後のコロンがいらないですね。
$res=$res & ""%"" & HexEncode(TextEncode(#chr; ""shift_jis""; 1))
ただコレだと、
あい
が、
%82A0%82A2
になってしまいますね。FileMakerだけでUTF-8以外のURLエンコードができそうですが、色々面倒ですね...。
>Webビューアーを使いQRコードを作成するデータ部分がShift_JISを指定してもUTF-8になる仕様みたいです。
そうではなくて qr_img.php は、SHIFT-JIS で処理していて、日本語を渡すときはURLエンコードが必要なだけなのでは...。
画像を返しているようなので、
スクリプト:URL から挿入 でも画像を取得出来ます。
URL から挿入
http://192.168.50.1/qr/php/qr_img.php?d=" & "%83e%83X%83g%97%5C%90f%95%5B-0000080001-20181009102711-35--02-admin-.pdf" & "&e=M&s=2
自動的にエンコードしない。
Offline
>Webビューアーを使いQRコードを作成するデータ部分がShift_JISを指定してもUTF-8になる仕様みたいです。
そうではなくて qr_img.php は、SHIFT-JIS で処理していて、日本語を渡すときはURLエンコードが必要なだけなのでは...。
訂正
>Webビューアーを使いQRコードを作成するデータ部分がShift_JISを指定してもUTF-8になる仕様みたいです。
そうですね。charset=Shift_JIS で指定しても変わりません。
Offline
> shift_jisの文字コードは2桁区切りとは限らないので、
hexencode した後で、2桁区切り以外ってありましたっけ。1バイト系は2桁、2バイト系は4桁になり、それ以外思いつかないのですが。
Offline
みなさまいろいろ、ありがとうございます。
なんとか出来ました。
助かりました。
簡単にSHIFT-JISへ変換できる関数が欲しいですね。
エプソンのDocument Capture Pro2.0もデコードの際にUTFでも上手く処理してくれると簡単になりますね。
Offline
プラグインを使えば、SHIFT-JISでURLエンコード出来ます。
フィールド:DATA 値: テスト予診票-0000080001-20181009102711-35--02-admin-.pdf
変数を設定 [$DATA; 値:
SMPS_Exe(
"$TEXT=" & Quote ( Table::DATA ) & ";
Add-Type -AssemblyName System.Web;
[System.Web.HttpUtility]::UrlEncode($TEXT,[Text.Encoding]::GetEncoding('SHIFT-JIS'));"
)
]
URL から挿入 [選択; Table::Result; "'http://192.168.50.1/qr/php/qr_img.php?d=\" & $DATA" & "&e=M&s=2]
ScriptMakerPS | FileMaker Plugin for Windows
https://sites.google.com/site/scriptmakerps/home
Offline
Shift_JIS文字変換とそのURLエンコードもできるようなので、
FM機能だけで実装出来ないかなあ!
Hiroさん
cURLで SHIFT-JIS・URLエンコード出来ました。
変数を設定 [$DATA; 値:TextEncode ( テキスト ; "shift_jis" ; 1 )]
URL から挿入 [選択; ダイアログあり:オフ; Table::Result; "http://....." ; cURL オプション:"-X GET --data-urlencode @$DATA"; URLを自動的にエンコードしない]
Last edited by qb_dp (2018-10-12 18:25:30)
Offline
解決としましたが、qb_dp様の方法試してみたく。
1.変数を設定 [$DATA; 値:TextEncode ( テキスト ; "shift_jis" ; 1 )]
2.URL から挿入 [選択; ダイアログあり:オフ; Table::Result; "http://....." ; cURL オプション:"-X GET --data-urlencode @$DATA"; URLを自動的にエンコードしない]
質問:設定値
1.テキスト部分≫変換したい文字列
2.URLから挿入
ターゲット≫QRを表示させるオブジェクトフィールド
URLを指定≫"http://192.168.50.1/qr/php/qr_img.php?d=" & $DATA & "&e=M&s=2"
cURLオプションの指定≫"-X GET --data-urlencode @$DATA"
とするとQRを表示させるオブジェクトフィールドに
「shift_jis.txt」というQRコードが生成されます。
設定内容が間違っているのでしょうか?
よろしくお願いします。
Offline
以下でお試し下さい。
・テキストは、サーチパラメータ部全体で、(クエリURLの ? 以降の変動引数部分)
「"d=テスト予診票-0000080001-20181009102711-35--02-admin-.pdf&e=M&s=2"」
・URLは、ターゲットファイルパス部で、(クエリURLの ? 以前の固定部分)
「"http://192.168.50.1/qr/php/qr_img.php"」
Offline
こんな感じでイケそうな。
変数を設定 [$DATA; 値:TextEncode ( "テスト予診票-0000080001-20181009102711-35--02-admin-.pdf" ; "shift_jis" ; 1 )]
URL から挿入 [選択; ダイアログあり:オフ; Table::Result; "http://192.168.50.1/qr/php/qr_img.php" ;
cURL オプション:
"
-X GET
--data-urlencode d@$DATA
-d e=M&s=2
";
URLを自動的にエンコードしない]
Offline
>#20 qb_dpさん『こんな感じでイケそうな。』
なるほど、
"=" や "&" などサーチ制御記号が URLエンコード されない
ような工夫が必要なわけですネ!
所で、データ値はダブルクォート囲みが無くても良かったでしょうか?
" -d e=M&s=2 " → " -d ""e=M&s=2"" "
Last edited by Hiro (2018-10-14 18:04:16)
Offline
qb_dpさんが最初に書かれた https://fmgo.jp/detail.php?recid=577 で Shift_JIS の QRコードができますが、これではダメなんですか?
わざわざ PHP に投げなくてもローカルで解決できるので、こちらの方がお手軽かと思います。
>所で、データ値はダブルクォート囲みが無くても良かったでしょうか?
>" -d e=M&s=2 " → " -d ""e=M&s=2"" "
どちらの場合も投げているデータは、同じようです。
--trace-ascii $$trace
を入れると確認出来ます。
Offline
本題は、「解決済」ですが、情報として記述しておきます。
FileMaker cURL shift_jis URLエンコード
FileMaker Pro 16 以降
URL から挿入 [選択; ダイアログあり:オフ; Table::Result; "http://....." ;
cURL オプション:
"
-X POST
--FM-text-encoding shift_jis
--data-urlencode data=こんにちわ
";
URLを自動的にエンコードしない]
Offline
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 577.44 KiB (Peak: 614.34 KiB) ]