試行錯誤ダイアリー

新卒エンジニアが日々の技術的な学び,働き方,日々感じたこと等を書きます

【aws】Redshiftにデータをインポートしたときのエラー


awsのRedshiftにデータをインポートしていた際に出たエラー

String contains invalid or unsupported UTF8 codepoints. Bad UTF8 hex sequence: 81 (error 3)

awsのドキュメントを見ると,エラーコードから

The UTF-8 single-byte character is out of range. The starting byte must not be 254, 255 or any character between 128 and 191 (inclusive). マルチバイト文字のロードエラー - Amazon Redshift

と書かれていて,どうやら扱える文字の範囲に無い文字が含まれているっぽい.

結果的に,インポートしたいデータの中に「’(全角のアポストロフィー)」が入っていたことが原因で,置換で半角にしたらエラーは解決した.

ちなみに, 全角のアポストロフィーの文字コード(Unicode)はWikipediaによるとU+FF07で, どうやらこのこの頭のFFが"the starting byte"にあたるようで10進数に変換すると,255であるから範囲内に含まれていないと推測した.

ちなみに他に,starting byteが255の例としては以下のようなものがある.
引用:Unicode表

starting byteが255の例
starting byteが255の例

これらの文字は扱えない可能性があるので注意したほうがいいかもしれない.


アポストロフィーといえば, Slack内のテキストの半角のアポストロフィーで囲われた文字列をコピーして貼り付けると,勝手に全角のアポストロフィーになってしまうことがあるのを思い出した.

あれは,App連携とかでメッセージを送るときに半角だとクエリ実行できてしまったりみたいなことに対する配慮なんだろうか.