(現在 過去ログ90 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■13397 / inTopicNo.1)  unicode が含まれるデータの抽出について
  
□投稿者/ きりこ -(2022/07/27(Wed) 12:10:56)
    絞り込みの事でお伺い出来たらと思います。

    エクセルやUTF-8のCSVを桐に読込後、項目内のunicodeの含まれるデータを
    絞り込みしたい場合、どのような関数を使用すればよいのでしょうか。

    例えば記号を含むデータを絞り込む場合は

    #is記号([],0)>0

    等で対応できましたが、そのような関数を探してみましたがありませんでした。
    S-JISのCSVにして「?」をサーチするのも大変なのでお分かりになる方が
    いらっしゃればご教授願いたいと思います。
    どうぞ宜しくお願いします。

引用返信 [メール受信/OFF] 削除キー/
■13399 / inTopicNo.2)  Re[1]: unicode が含まれるデータの抽出について
□投稿者/ ONnoji -(2022/07/27(Wed) 18:18:43)
    2022/07/27(Wed) 18:30:58 編集(投稿者)

    例えば、アマゾンのデータをコピペした時

    UTF8

    出版社 : プレジデント社 (2020/11/29)
    発売日 : 2020/11/29
    言語 : 日本語
    単行本 : 256ページ
    ISBN-10 : 4833423995
    ISBN-13 : 978-4833423991

    これをシフトJISに変換すると

    シフトJIS

    出版社 ? : ? プレジデント社 (2020/11/29)
    発売日 ? : ? 2020/11/29
    言語 ? : ? 日本語
    単行本 ? : ? 256ページ
    ISBN-10 ? : ? 4833423995
    ISBN-13 ? : ? 978-4833423991

    となる。

    桐10sで ? の文字コードを調べたところ、

    U+200F Right-to-left mark (RLM)とU+200E Left-to-right mark (LRM)という表示されない文字だと分かった。

    これならば、邪魔だよね。

    しかし、アマゾンのページではこんなゴミみたいなデータが付くんだろう??

    それは別に置いておいて、

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    さて本題ですが・・・

    もしも、「unicodeの含まれる文字」を「unicode に含まれるが jis に該当しない文字」と考えてよいのであれば、

    #jis( 文字 ) が返す値が未定義値で判定できると思いますが、1文字ずつ当たらなければならないからお手軽とは言えないですね。

    #hex( #unicode( " " ) ) → 200F

    #hex( #jis( " " ) )   → 未定義値


    双方向テキスト 出典: フリー百科事典『ウィキペディア(Wikipedia)』

    コード 名称
    U+061C Arabic letter mark (ALM)
    U+200E Left-to-right mark (LRM)
    U+200F Right-to-left mark (RLM)
    U+202A Left-to-right embedding (LRE)
    U+202B Right-to-left embedding (RLE)
    U+202C Pop directional formatting (PDF)
    U+202D Left-to-right override (LRO)
    U+202E Right-to-left override (RLO)
    U+2066 Left-to-right isolate (LRI)
    U+2067 Right-to-left isolate (RLI)
    U+2068 First strong isolate (FSI)
    U+2069 Pop directional isolate (PDI)

    この中で LRM と RLM と ALM が最もよく使われる。
    LRM は表示されない強い左横書きの文字として働く。
       ・・・・・・
    RLM と ALM は同様に強い右横書きの文字として働く。
    LRM と RLMは ISO/IEC 8859-6 にも存在する。
    ALM はアラビア文字用で、Unicode 6.3 で追加された。


引用返信 [メール受信/OFF] 削除キー/
■13401 / inTopicNo.3)  Re[1]: unicode が含まれるデータの抽出について
□投稿者/ 尾形 -(2022/07/27(Wed) 19:03:38)
    どうも、こんにちは

    桐9で扱えない文字が含まれているか
    を判定されたいのだろう
    との想像です


    桐9で扱えない文字は全て
    ? 文字コード:003F となるようですので

    #文字位置([],"?")
    で判定してました

引用返信 [メール受信/OFF] 削除キー/
■13402 / inTopicNo.4)  Re[2]: unicode が含まれるデータの抽出について
□投稿者/ ONnoji -(2022/07/27(Wed) 19:07:00)
    2022/07/27(Wed) 19:10:51 編集(投稿者)

    > もしも、「unicodeの含まれる文字」を「unicode に含まれるが jis に該当しない文字」と考えてよいのであれば、
    >
    > #jis( 文字 ) が返す値が未定義値で判定できると思いますが、1文字ずつ当たらなければならないからお手軽とは言えないですね。

    発想を逆にして、特定の文字を狙い撃ちにして、任意の文字、または未定義値に変換したらいかがでしょうか??

    例えば、置換の計算式

     #文字置換( [], #unicode( #hex( "200F" ) ), "☠" )  #文字置換( [], #unicode( #hex( "200F" ) ), "" )

     #文字置換( [], #unicode( #hex( "200E" ) ), "☠" )  #文字置換( [], #unicode( #hex( "200E" ) ), "" )

    とかね。


引用返信 [メール受信/OFF] 削除キー/
■13403 / inTopicNo.5)  Re[2]: unicode が含まれるデータの抽出について
□投稿者/ hidetake -(2022/07/28(Thu) 07:48:42)
引用返信 [メール受信/OFF] 削除キー/
■13404 / inTopicNo.6)  Re[2]: unicode が含まれるデータの抽出について
□投稿者/ きりこ -(2022/07/28(Thu) 10:15:27)
    ONnoji様
    hidetake様
    尾形様

    ご返信ありがとうございました。

    漢字コードに関してはそこまで詳しくはないのですが
    奥が深すぎて良く分からなくなってしまいました。

    尾形様の返信の通り、氏名・住所の項目で
    桐9で扱えない文字を判定してunicodeで対応していないソフトで
    対応する場合の注意喚起をしたいというのが意図になります。



    No13401に返信(尾形さんの記事)
    > どうも、こんにちは
    >
    > 桐9で扱えない文字が含まれているか
    > を判定されたいのだろう
    > との想像です
    >
    >
    > 桐9で扱えない文字は全て
    > ? 文字コード:003F となるようですので
    >
    > #文字位置([],"?")
    > で判定してました
    >
引用返信 [メール受信/OFF] 削除キー/
■13405 / inTopicNo.7)  Re[3]: unicode が含まれるデータの抽出について
□投稿者/ ONnoji -(2022/07/28(Thu) 11:40:34)
    2022/07/28(Thu) 12:01:14 編集(投稿者)

    > 桐9で扱えない文字を判定してunicodeで対応していないソフトで
    > 対応する場合の注意喚起をしたいというのが意図になります。

    桐9で扱える文字コードは ANSI・シフトJIS なのですから、その範囲外の文字はいわゆる豆腐( "□" )になったんじゃないかな?

    登録されていない外字と同じじゃないかな??

    確認してませんけど・・・(^^ゞ

    ↑この予想は誤りでした。

    試したところ、JISに無くて unicode にある漢字

     𠮟 (D842 口へんに七:叱る)を桐9-2012の表に入力(コピペ)して確定すると、?? になりました。

    ↑の文字は以下のwebページでコピー出来ますよ。

    こちら
     ↓
    新常用漢字表が迫るUnicode移行、「シフトJIS」では対応不可能 | 日経クロステック(xTECH)
    https://xtech.nikkei.com/it/article/COLUMN/20091209/341831/


引用返信 [メール受信/OFF] 削除キー/
■13406 / inTopicNo.8)  Re[4]: unicode が含まれるデータの抽出について
□投稿者/ きりこ -(2022/07/28(Thu) 11:47:51)
    ONnoji様

    ご返信ありがとうございます。

    桐9で「□」や「?」に変換されてしまっていた事を
    桐10で変換されていないデータに対して抽出したいと思っております。

    ご説明が足りてなくて申し訳ございません。



    No13405に返信(ONnojiさんの記事)
    >>桐9で扱えない文字を判定してunicodeで対応していないソフトで
    >>対応する場合の注意喚起をしたいというのが意図になります。
    >
    > 桐9で扱える文字コードは ANSI・シフトJIS なのですから、その範囲外の文字はいわゆる豆腐( "□" )になったんじゃないかな?
    >
    > 登録されていない外字と同じじゃないかな??
    >
    > 確認してませんけど・・・(^^ゞ
引用返信 [メール受信/OFF] 削除キー/
■13407 / inTopicNo.9)  Re[5]: unicode が含まれるデータの抽出について
□投稿者/ ONnoji -(2022/07/28(Thu) 12:26:38)
    > 桐9で「□」や「?」に変換されてしまっていた事を
    > 桐10で変換されていないデータに対して抽出したいと思っております。
    >
    > ご説明が足りてなくて申し訳ございません。

    桐9で ?? や ? や 口 として表示されてしまった文字の元の文字を復元するのは無理ですよ。

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    以下は桐10環境での操作に関してですのでお間違え無く。

    桐10の表のデータで、シフトJIS に無くて unicode にある文字を

    #シフトjis関数で調べた時の値は、"81A0" ※ただし16進数 でした。

    ちなみに、

    #シフトjis( #hex( "81A0" ) ) が返す値(文字)が豆腐( "□" )です。

    ということで、

     #hex( #シフトjis( #sstr([項目名], n, 1 ) ) ) = "81A0"

     ※n は整数(範囲は1から項目値の文字数まで )

    という条件を利用することで、判定できると思います。

    しかし、1文字ずつ当たらなければならないからお手軽とは言えないですね。

    以上までが当方の知見のすべてでした。

    これ以上のアイデアは見つかりそうにないので、回答を他の人に譲って退席いたします。(@^^)/~~~



引用返信 [メール受信/OFF] 削除キー/
■13408 / inTopicNo.10)  Re[3]: unicode が含まれるデータの抽出について
□投稿者/ 尾形 -(2022/07/28(Thu) 12:46:11)
    > 桐9で扱えない文字を判定してunicodeで対応していないソフトで
    > 対応する場合の注意喚起をしたいというのが意図になります。

    #文字位置([],"?")>0

    これじゃダメですか?



引用返信 [メール受信/OFF] 削除キー/
■13409 / inTopicNo.11)  Re[6]: unicode が含まれるデータの抽出について
□投稿者/ きりこ -(2022/07/28(Thu) 12:55:59)
    ONnoji様

    色々と考えて頂きましてありがとうございます。
    もうちょっと自分でも工夫しながら考えてみたいと思います。


    No13407に返信(ONnojiさんの記事)
    >>桐9で「□」や「?」に変換されてしまっていた事を
    >>桐10で変換されていないデータに対して抽出したいと思っております。
    >>
    >>ご説明が足りてなくて申し訳ございません。
    >
    > 桐9で ?? や ? や 口 として表示されてしまった文字の元の文字を復元するのは無理ですよ。
    >
    >  ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇
    >
    > 以下は桐10環境での操作に関してですのでお間違え無く。
    >
    > 桐10の表のデータで、シフトJIS に無くて unicode にある文字を
    >
    > #シフトjis関数で調べた時の値は、"81A0" ※ただし16進数 でした。
    >
    > ちなみに、
    >
    > #シフトjis( #hex( "81A0" ) ) が返す値(文字)が豆腐( "□" )です。
    >
    > ということで、
    >
    >  #hex( #シフトjis( #sstr([項目名], n, 1 ) ) ) = "81A0"
    >
    >  ※n は整数(範囲は1から項目値の文字数まで )
    >
    > という条件を利用することで、判定できると思います。
    >
    > しかし、1文字ずつ当たらなければならないからお手軽とは言えないですね。
    >
    > 以上までが当方の知見のすべてでした。
    >
    > これ以上のアイデアは見つかりそうにないので、回答を他の人に譲って退席いたします。(@^^)/~~~
    >
    >
    >
引用返信 [メール受信/OFF] 削除キー/
■13410 / inTopicNo.12)  Re[4]: unicode が含まれるデータの抽出について
□投稿者/ きりこ -(2022/07/28(Thu) 13:00:26)
    尾形様

    ご返信ありがとうございます。
    桐9では「?」を抽出すればよかったのですが
    桐10では「𠮷」(吉の上が土)や「𦚰」(脇の力が刀)等の
    環境依存文字と言われているデータをまとめて抽出する事が出来なくて
    頭を悩ましております。

    もうちょっと自分でも考えてみます。


    No13408に返信(尾形さんの記事)
    >>桐9で扱えない文字を判定してunicodeで対応していないソフトで
    >>対応する場合の注意喚起をしたいというのが意図になります。
    >
    > #文字位置([],"?")>0
    >
    > これじゃダメですか?
    >
    >
    >
引用返信 [メール受信/OFF] 削除キー/
■13411 / inTopicNo.13)  Re[7]: unicode が含まれるデータの抽出について
□投稿者/ ONnoji -(2022/07/28(Thu) 13:32:03)
    > 桐10では「𠮷」(吉の上が土)や「𦚰」(脇の力が刀)等の
    > 環境依存文字と言われているデータをまとめて抽出する事が出来なくて
    > 頭を悩ましております。

    なるほど!、環境依存文字なんね。早く言ってよぉ〜(@_@)

    最初から入力しないのが一番なんですけれど、こればっかりはどうにもなりそうにないですね。

    確かめたところ、やはりシフトJISで扱うと豆腐( "□" )ですね。

    手間でしょうけれども、簡単な手続きを作って実行すれば、検出可能ですね。

    先頭から終端まで順番に移動するループ内で、文字列の項目の先頭文字から順番に1文字ずつ調べるだけです。

    文字数やレコード数が多いと時間がかかるでしょうけれど・・・




引用返信 [メール受信/OFF] 削除キー/
■13412 / inTopicNo.14)  Re[8]: unicode が含まれるデータの抽出について
□投稿者/ きりこ -(2022/07/28(Thu) 13:55:05)
    ONnoji様

    ご返信ありがとうございます。
    手続きという事はやはりイベントとか一括処理の工程になるのですね。
    まだまだそちらの世界には手を出していない状態で勉強不足です。
    色々とお調べ頂きましてありがとうございました。


    No13411に返信(ONnojiさんの記事)
    >>桐10では「𠮷」(吉の上が土)や「𦚰」(脇の力が刀)等の
    >>環境依存文字と言われているデータをまとめて抽出する事が出来なくて
    >>頭を悩ましております。
    >
    > なるほど!、環境依存文字なんね。早く言ってよぉ〜(@_@)
    >
    > 最初から入力しないのが一番なんですけれど、こればっかりはどうにもなりそうにないですね。
    >
    > 確かめたところ、やはりシフトJISで扱うと豆腐( "□" )ですね。
    >
    > 手間でしょうけれども、簡単な手続きを作って実行すれば、検出可能ですね。
    >
    > 先頭から終端まで順番に移動するループ内で、文字列の項目の先頭文字から順番に1文字ずつ調べるだけです。
    >
    > 文字数やレコード数が多いと時間がかかるでしょうけれど・・・
    >
    >
    >
    >
引用返信 [メール受信/OFF] 削除キー/
■13413 / inTopicNo.15)  Re[9]: unicode が含まれるデータの抽出について
□投稿者/ ONnoji -(2022/07/28(Thu) 15:03:49)
    2022/07/28(Thu) 16:07:09 編集(投稿者)

    > 手続きという事はやはりイベントとか一括処理の工程になるのですね。
    > まだまだそちらの世界には手を出していない状態で勉強不足です。

    おそらく人名ではありませんか??

    それならば、文字数は多くないですね。

    だったら、検査する項目は1つで済みそうですね。※もちろん複数の項目でもOK。その場合でも1つずつ処理するだけなのですから

    サンプルのデータとして、表(.tbx)を投稿に添付してくれたら簡単な見本を作りますよ。


引用返信 [メール受信/OFF] 削除キー/
■13414 / inTopicNo.16)  Re[10]: unicode が含まれるデータの抽出について
□投稿者/ きりこ -(2022/07/28(Thu) 16:42:21)
    ONnoji様

    何から何までご厚意ありがとうございます。

    ご指摘の通り項目は
    氏名
    会社名(学校名含む) 
    住所1(都道府県)
    住所2(市区郡・町名・丁目番地号)
    住所3(ビルマンション名含む)
    です。

    環境依存文字が入っている可能性のある項目は
    「住所1(都道府県)」以外の項目です。


    現在、月末月初で業務に追われておりまして
    テストファイルを作成する事が困難な状況です。
    来月落ち着きましたら改めてご返信させていただきます。

    ご厚意で作成して頂く前提ですので
    ご都合が悪ければ無視して頂いてかまいません。

    ありがとうございました。


    No13413に返信(ONnojiさんの記事)
    > 2022/07/28(Thu) 16:07:09 編集(投稿者)
    >
    >>手続きという事はやはりイベントとか一括処理の工程になるのですね。
    >>まだまだそちらの世界には手を出していない状態で勉強不足です。
    >
    > おそらく人名ではありませんか??
    >
    > それならば、文字数は多くないですね。
    >
    > だったら、検査する項目は1つで済みそうですね。※もちろん複数の項目でもOK。その場合でも1つずつ処理するだけなのですから
    >
    > サンプルのデータとして、表(.tbx)を投稿に添付してくれたら簡単な見本を作りますよ。
    >
    >
引用返信 [メール受信/OFF] 削除キー/
■13415 / inTopicNo.17)  Re[11]: unicode が含まれるデータの抽出について
□投稿者/ ONnoji -(2022/07/28(Thu) 18:56:23)
    2022/07/29(Fri) 12:33:54 編集(投稿者)

    ツリーが深くなって見辛くなったので、13422 へ再投稿移転しました。



    以下はデータです。

    ■シフトJIS以外の文字の前後を疑問符で囲む.wfx

     オブジェクト名: cmd疑問符を除去します
     標題     : 疑問符を除去します

      機能名    機能パラメータリスト
     1 表示
     2 手続き実行  cmd疑問符を除去しますClick
     3 なし
     4 なし

     オブジェクト名: cmd氏名を検査
     標題     : 氏名を検査して機種依存文字の前後を?で囲む

      機能名    機能パラメータリスト
     1 表示
     2 手続き実行  cmd氏名を検査Click
     3 なし
     4 なし


    ■シフトJIS以外の文字の前後を疑問符で囲む.kex


    名札  メイン



    手続き定義開始 cmd氏名を検査Click( )
     変数宣言 自動,文字列{ &title = "cmd氏名を検査Click( )", &msg }
     変数宣言 自動,文字列{ &fieldName }
     変数宣言 自動,文字列{ &string }
     変数宣言 自動,文字列{ &workString }
     変数宣言 自動,文字列{ &chr }
     変数宣言 自動,整数 { &fieldNum }
     変数宣言 自動,整数 { &chrCount }
     変数宣言 自動,整数 { &i, &loop, &step = 1 }

     &fieldName = "氏名"  /* 角カッコで囲まないで項目名を指定します 〇 "氏名" × "[氏名]" */
     &fieldNum = #項目番号( &fieldName ) /* 項目の番号 */

     ジャンプ 行番号 = 先頭
    ┌繰り返し ( .not #eof )

    │ &workString = #u
    │ &string   = #項目属性( &fieldNum, 0 ) /* 項目値の取得       */
    │ &chrCount  = #文字数( &string )     /* 項目値の文字数をカウント */
    │ **トレース出力 _&string, "  ", _&chrCount

    │ &loop = &chrCount
    │┌繰り返し &i = 1, &loop, &step
    ││
    ││ &chr = #sstr( &string, &i, 1 )
    ││ **トレース出力 _&i, "  ", _&chr, "  ", ( #hex( #シフトjis( &chr ) ) = "81A0" )
    ││
    ││┌if ( #hex( #シフトjis( &chr ) ) = "81A0" .and #hex( #unicode( &chr ) ) <> "25A1" )
    │││ &chr = "?" + &chr + "?"
    ││└end
    ││ &workString = &workString + &chr
    ││
    │└繰り返し終了
    │ **トレース出力 _&string, "  ", _&workString

    │┌if ( #文字位置( &workString, "?" ) <> 0 )
    ││ 行訂正 &fieldNum = &workString
    │└end

    │ ジャンプ 行番号 = 次行
    └繰り返し終了


     &msg = "先頭行から行終端まで至りました"
     メッセージボックス &title, &msg, アイコン = I, ボタン指定 = 1, 制御文字展開 = する

    手続き定義終了

    手続き定義開始 cmd疑問符を除去しますClick( )
     変数宣言 自動,文字列{ &title = "cmd疑問符を除去しますClick", &msg }

     置換 [氏名] = #文字置換( [氏名], "?", #u )
     &msg =      "コマンド:置換 [氏名] = #文字置換( [氏名], ""?"", #u ) "
     &msg = &msg + "\n\nを実行しました"
     メッセージボックス &title, &msg, アイコン = I, ボタン指定 = 1, 制御文字展開 = する

    手続き定義終了



引用返信 [メール受信/OFF] 削除キー/
■13416 / inTopicNo.18)  Re[12]: unicode が含まれるデータの抽出について
□投稿者/ hidetake -(2022/07/29(Fri) 07:28:15)
    > ││┌if ( #hex( #シフトjis( &chr ) ) = "81A0" .and #hex( #unicode( &chr ) ) <> "25A1" )

    これは、環境設定「全般」→「高度な設定」の
    「シフトJIS変換処理で使う置き換え文字」の
    設定に依存するのですね。
引用返信 [メール受信/OFF] 削除キー/
■13417 / inTopicNo.19)  Re[13]: unicode が含まれるデータの抽出について
□投稿者/ hidetake -(2022/07/29(Fri) 08:08:54)
    2022/07/29(Fri) 08:19:36 編集(投稿者)

    #hex( #シフトjis( &chr ) )

    って、桐10 の場合、文字が Unicode のみの
    場合、"FCFC" 以上の値を返すようですね。

    と、思ったけど、単純では無かった。

    #hex(#jis("&#157360;"))
    #hex(#jis("&#134071;"))

    if ( #unicode(#jis(#jis(&chr))) <> #unicode( &chr ))

    では、&#157360; の方がうまく処理されなかったので
    不思議に思ったのですが。
引用返信 [メール受信/OFF] 削除キー/
■13418 / inTopicNo.20)  Re[14]: unicode が含まれるデータの抽出について
□投稿者/ hidetake -(2022/07/29(Fri) 09:14:34)
    > if ( #unicode(#jis(#jis(&chr))) <> #unicode( &chr ))

    何をやっているのだ!!

    if ( #unicode(#sj(#sj(&chr))) <> #unicode( &chr ))

    なんで #jis って書いたのだろう。
引用返信 [メール受信/OFF] 削除キー/

次の20件>

トピック内ページ移動 / << 0 | 1 >>

[このトピックに返信]
Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -