ホワイトレンド

きあいのタスキ

【GPT-5】URLエンコードをすると、%EF%BB%BFが余分に生成されます

なるほど 👍
%EF%BB%BFUTF-8のBOM (Byte Order Mark) をURLエンコードした結果です。

なぜ発生するのか

  • BOMはUTF-8の先頭に付与されることがある「目印」で、バイト列は 0xEF 0xBB 0xBF

  • テキストファイルを保存するときや、Excel/エディタなどからコピーしたときに自動的に付与されることがあります。

  • これがそのままURLエンコードされると %EF%BB%BF が余計に付与されたように見える、という仕組みです。

対処方法

  1. BOMを削除してからエンコードする

    • 例えば、Pythonならファイルを開くときに encoding="utf-8-sig" を使えば自動でBOMを除去できます。

       
      with open("input.txt", "r", encoding="utf-8-sig") as f: text = f.read()

      → この場合、先頭のBOMは含まれません。

  2. 文字列の先頭にBOMがあるかをチェックして削除する

     
    if text.startswith("\ufeff"): # BOMのUnicode表現 text = text.lstrip("\ufeff")
  3. エディタや保存設定でBOMなしUTF-8を使う

    • VSCodeなどのエディタで「UTF-8 (BOMなし)」で保存する設定に変更できます。


👉 質問ですが:
%EF%BB%BF が付いて困っているのは どの場面ですか?

  • ファイルから読み込んだ文字列をURLエンコードしているとき?

  • Webアプリやブラウザの挙動?

  • それともExcel/CSVを扱っているとき?

状況に応じて、もっと具体的な回避策を書けますよ。