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

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

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

You are not logged in.

Announcement

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


#1 2020-02-05 10:27:21

Valon
Member

UTF-8コードの半角スペース C2A0

お世話になっております。
Win10 FM18です。

UTF-8文字コードの半角スペース 「C2A0」
がデータベースに登録されており、サイトに反映させた際に「?」に文字化けしてしまうことがあります。

判別方法、取り除き方を教えていただけないでしょうか。
よろしくお願いいたします。

Offline

#2 2020-02-05 11:03:12

qb_dp
Member

Re: UTF-8コードの半角スペース C2A0

C2A0 は、Char ( 160 )のようなので、以下で消えます。

Substitute ( text ; Char ( 160 ) ; "" )

Offline

#3 2020-02-05 11:33:31

Valon
Member

Re: UTF-8コードの半角スペース C2A0

qb_dp様

いつもありがとうございます。
解決いたしました。

Offline

#4 2020-02-05 12:34:24

Valon
Member

Re: UTF-8コードの半角スペース C2A0

qb_dp様の方法で1つのレコードで試し、成功したため
該当のレコード(2,900)に置換をかけたところ2回フリーズしました。
(クライアントがレコードを編集中となり、落とせない状態。)

また、フィールドの自動化にもSubstituteを指定してみたところ
こちらもフリーズしてしまいました。

何か考えられる原因はございますでしょうか。

Filemakerのフィールド内に入力してある文字コード等との兼ね合いがうまく行ってないのでしょうか。
よろしくお願いいたします。

Offline

#5 2020-02-06 08:50:58

himaganee
Guest

Re: UTF-8コードの半角スペース C2A0

過去の質問を見るとExecuteSQLを使うことがある方のようですが、この関数は条件によっては非常に重いので、フィールド計算式に使うと件のような現象になることがあります。
例えば、1件レコードを編集や入力する時に計算するなら0.1秒で終わって特に気にならなかったものでも、3000件置換(とかインポートとか)で一度に計算すると300秒=5分かかることになります。

ただ、フィールドの自動化ならその時点では既存のレコードに対しては計算されないので、違うケースかなあ。

#6 2020-02-06 09:10:48

Valon
Member

Re: UTF-8コードの半角スペース C2A0

himaganee様
ありがとうございます。

フィールドの自動化にて使用していたのはSubstituteのみであり
条件に、[ char (160) ; " " ] を足しただけです。

置換については、同フィールドを更新のために同内容で置換しました。
進捗バー2回とも、残り 2401 / 2900で止まりました。

このあたりのレコードが壊れているのかと思い、
周辺レコードの該当フィールドを手で更新したところそちらもフリーズとなりました。

別テーブルへインポートする際に同様のSubstituteを使用した置換を行うと正常に終了しました。

上記の処置を行ったため絶対に修正が必要というわけではございませんが
何か原因と思われることがございましたらご教示のほどよろしくお願いいたします。

Offline

#7 2020-02-06 09:38:31

himaganee
Guest

Re: UTF-8コードの半角スペース C2A0

>周辺レコードの該当フィールドを手で更新したところそちらもフリーズとなりました。

確かにデータが壊れてるような動作ですね。外部からコピペで入れたとかのせいで変な値になってるのかな?Char(0)が入ってるとか。

#8 2020-02-06 14:34:02

Valon
Member

Re: UTF-8コードの半角スペース C2A0

himaganee様
ありがとうございます。

外部からコピペを多用しているフィールドです。
Char(0)は1つもございませんでした。

外部からコピペする際にFileMakerのデータ用に綺麗?にするやり方などはあったりするのでしょうか。
[ char (160) ; " " ] の他にもいろいろと制御したい文字があるので、Substituteで10個ぐらい置換しています。

Offline

#9 2020-02-06 16:06:14

himaganee
Guest

Re: UTF-8コードの半角スペース C2A0

FMの関数Char(0)の結果を検索してもその文字は見つかりませんけど、そこはご存知でしょうか。(Char(0)は長さ0です)
FMの機能でChar(0)を入力するには、Base64Decode ( "AA==" )を使ったりします。

特にスマートな方法は知りませんけど、コピペだとChar(0)以外にも予期せぬコントロールコードが入る可能性はありますよね。FM自体がクリーンにしてくれるかどうか?
昔レイアウトに貼り付けた文字がDDRでエラーになる例を見たことがありますが、データの場合はどうなのかなあ。

#10 2020-02-06 16:10:21

Valon
Member

Re: UTF-8コードの半角スペース C2A0

himaganee様
ありがとうございます。

別ファイルを作り、同様のフィールド設定や置換を行っても
特にフリーズは見られませんでした。

解決しておりませんが、根が深そうなので
一旦解決とさせていただきます。

Base64Decodeを使用しChar(0)が見つかり、その後対処できましたら
こちらへログとして残しておきます。

Offline

#11 2020-03-19 18:54:25

Valon
Member

Re: UTF-8コードの半角スペース C2A0

後日談となりますが、フリーズの原因は恐らくレコード破損だったようです。

最適化コピーでファイルを保存したところ、該当レコードが検索に引っかからなくなりましたが
レコードを探し当て削除することができ、今回の処理も動くようになりました。

ログとして残させていただきます。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 521.91 KiB (Peak: 526.45 KiB) ]