文字コードUTF-8のファイルを判別する方法

World WideのLANSA技術フォーラムに投稿されたトピックと、日本のお客様からのお問い合わせへの回答の中から、皆様にお役に立つLANSAの開発テクニックやトラブルシュートに関する情報をご紹介します。

質問

IBM i上に、アップロードされたCSVファイルの文字コードが、UTF-8であるか判別する方法はありますか?

回答


IBM i上で、アップロードされたファイルが、「Shift_JIS」か「UTF-8」かを検査する方法はロジックで行ってください。
「UTF-8」ファイルでは、BOM(16進’EFBBBF’)がファイルの先頭に含まれるので、組み込み関数「STM_FILE_READ」でファイルの内容を読んでみて、BOMの値を検査してください。
以下は、検査ロジックのサンプルです。

*
Define Field(#BOM) Type(*CHAR) Length(10)
Define Field(#HEX) Type(*CHAR) Length(6)
Define Field(#FILENO) Type(*DEC) Length(3) Decimals(0)
Define Field(#RETNCODE) Type(*CHAR) Length(2)
Define Field(#OPTIONS) Type(*CHAR) Length(256) Desc('オプション’) Input_Atr(LC)
*
Change Field(#OPTIONS) To("’Read BINARY LineTerminator=ALL"’)
Use Builtin(STM_FILE_OPEN) With_Args(#FileName #OPTIONS) To_Get(#FILENO #RETNCODE)
Use Builtin(STM_FILE_READ) With_Args(#FILENO) To_Get(#BOM)
Use Builtin(BINTOHEX) With_Args(#BOM) To_Get(#HEX)
*
If Cond(#HEX = EFBBBF)
* UTF-8のファイルとして処理する
Endif

有償の「LANSAテクニカル・ホットライン・サービス」をご契約いただければ、過去データベースの検索から今回ご紹介した以外の技術情報を探すことも出来ます。 「LANSAテクニカル・ホットライン・サービス」のご契約についてはお問い合わせフォーム(https://www.lansa.jp/inquiryform/)よりお問い合わせください。

LANSAコミュニティに登録する

IBMi(AS/400)をご利用の企業様必読!
LANSAを利用したIBMiの活用方法や成功事例をお届け致します。