初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2018-10-09 16:17:10

hijiri
Member

QRコード作成 フィールド文字のエンコード変換について

Windows 環境FM17

フィールド1[テキスト]に

テスト-0000080001-20181009161017-35--02-9999-.pdf
という文字が入力されています。

電子カルテで利用しているため外部通信は出来ないのでPHPを使ってQRコードが作成できるツールに引数渡ししてWebビューアーを使いQRコードを作成しています。

ファイルメーカーのフィールドの文字エンコードがUTFのため、
EPSONのスキャナ:Document Capture Proで読み取ると、テストの部分が文字化けします。(日本語以外は問題なし)

フィールド1[テキスト]を文字エンコード[SHIFT_JIS]に置き換えることは出来ないでしょうか?

よろしくお願いします。

Offline

#2 2018-10-09 17:02:08

Shin
Member

Re: QRコード作成 フィールド文字のエンコード変換について

文字列をテキストでshift-JISでエクスポートして、それをPHPで読みこませるのが一番手軽では。

Offline

#3 2018-10-09 17:23:40

qb_dp
Member

Re: QRコード作成 フィールド文字のエンコード変換について

「QRコードが作成できるツール」の方で、SHIFT_JISでQRコードを作成するようにしないとイケないのでは...。

Offline

#4 2018-10-09 21:24:04

hijiri
Member

Re: QRコード作成 フィールド文字のエンコード変換について

qb_dp様の言うとおり、QRコードを作成する側がSHIFT-JISで作成してくれれば、解決だと思います。
ローカルだけで簡単にQRコードをSHIFT-JISで作成するおすすめなプログラムなど知っている方いれば教えて下さい。

Offline

#5 2018-10-09 22:50:26

Hiro
Member

Re: QRコード作成 フィールド文字のエンコード変換について

>#4『ローカルだけで簡単にQRコードをSHIFT-JISで作成するおすすめなプログラムなど知っている』

「なでしこ」FileMakerプラグインとか、→ https://nadesi.com/top/index.php?FileMa … 4%E3%83%B3

Offline

#6 2018-10-10 10:44:02

qb_dp
Member

Re: QRコード作成 フィールド文字のエンコード変換について

試しては無いですが、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

#7 2018-10-10 12:37:23

hijiri
Member

Re: QRコード作成 フィールド文字のエンコード変換について

いろいろ試した結果です。

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

#8 2018-10-10 22:01:26

Shin
Member

Re: QRコード作成 フィールド文字のエンコード変換について

ハイフンの前の、"テスト予診票" のみをエンコードすればいいのでしたら、

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

#9 2018-10-11 02:40:20

Hiro
Member

Re: QRコード作成 フィールド文字のエンコード変換について

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

#10 2018-10-11 09:18:14

qb_dp
Member

Re: QRコード作成 フィールド文字のエンコード変換について

おぉ!
HexEncode ( TextEncode ( text ; "shift_jis" ; 1 ) )
こんな使い方ができたんですね。

Offline

#11 2018-10-11 09:51:20

qb_dp
Member

Re: QRコード作成 フィールド文字のエンコード変換について

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

#12 2018-10-11 10:30:32

qb_dp
Member

Re: QRコード作成 フィールド文字のエンコード変換について

>Webビューアーを使いQRコードを作成するデータ部分がShift_JISを指定してもUTF-8になる仕様みたいです。
そうではなくて qr_img.php は、SHIFT-JIS で処理していて、日本語を渡すときはURLエンコードが必要なだけなのでは...。

訂正
>Webビューアーを使いQRコードを作成するデータ部分がShift_JISを指定してもUTF-8になる仕様みたいです。
そうですね。charset=Shift_JIS で指定しても変わりません。

Offline

#13 2018-10-11 13:30:58

Shin
Member

Re: QRコード作成 フィールド文字のエンコード変換について

> shift_jisの文字コードは2桁区切りとは限らないので、
hexencode した後で、2桁区切り以外ってありましたっけ。1バイト系は2桁、2バイト系は4桁になり、それ以外思いつかないのですが。

Offline

#14 2018-10-12 00:39:33

hijiri
Member

Re: QRコード作成 フィールド文字のエンコード変換について

みなさまいろいろ、ありがとうございます。
なんとか出来ました。
助かりました。

簡単にSHIFT-JISへ変換できる関数が欲しいですね。
エプソンのDocument Capture Pro2.0もデコードの際にUTFでも上手く処理してくれると簡単になりますね。

Offline

#15 2018-10-12 07:46:45

qb_dp
Member

Re: QRコード作成 フィールド文字のエンコード変換について

プラグインを使えば、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

#16 2018-10-12 13:45:26

Hiro
Member

Re: QRコード作成 フィールド文字のエンコード変換について

FM関数だけでは、結局のところ、変換Shift_JIS文字のURLエンコードが出来ないからダメだったですネ。

ならば、
「URLから挿入」の cURL オプションでなら、Shift_JIS文字変換とそのURLエンコードもできるようなので、
FM機能だけで実装出来ないかなあ!

Offline

#17 2018-10-12 18:24:51

qb_dp
Member

Re: QRコード作成 フィールド文字のエンコード変換について

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

#18 2018-10-14 00:36:49

hijiri
Member

Re: QRコード作成 フィールド文字のエンコード変換について

解決としましたが、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

#19 2018-10-14 02:09:54

Hiro
Member

Re: QRコード作成 フィールド文字のエンコード変換について

以下でお試し下さい。

・テキストは、サーチパラメータ部全体で、(クエリ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

#20 2018-10-14 13:01:27

qb_dp
Member

Re: QRコード作成 フィールド文字のエンコード変換について

こんな感じでイケそうな。

変数を設定 [$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

#21 2018-10-14 14:14:50

Hiro
Member

Re: QRコード作成 フィールド文字のエンコード変換について

>#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

#22 2018-10-14 23:36:30

ななし
Guest

Re: QRコード作成 フィールド文字のエンコード変換について

qb_dpさんが最初に書かれた https://fmgo.jp/detail.php?recid=577 で Shift_JIS の QRコードができますが、これではダメなんですか?
わざわざ PHP に投げなくてもローカルで解決できるので、こちらの方がお手軽かと思います。

#23 2018-10-16 13:20:57

qb_dp
Member

Re: QRコード作成 フィールド文字のエンコード変換について

>所で、データ値はダブルクォート囲みが無くても良かったでしょうか?
>" -d e=M&s=2 "   →   " -d ""e=M&s=2"" "

どちらの場合も投げているデータは、同じようです。

--trace-ascii $$trace

を入れると確認出来ます。

Offline

#24 2018-10-18 09:36:30

qb_dp
Member

Re: QRコード作成 フィールド文字のエンコード変換について

本題は、「解決済」ですが、情報として記述しておきます。

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

Registered users online in this topic: 0, guests: 1
[Bot] claudebot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 577.44 KiB (Peak: 614.34 KiB) ]