仕事と家事で毎日バタバタ…
ずぼら主婦さゆです。
単身赴任中の夫、わたし、3歳娘の
3人家族
このブログでは
なるべくラクに家計をやりくりする方法
節約しつつプチ贅沢を楽しむコツ
夢のマイホーム実現に向けた情報
を発信していきます!
いいねやコメントもらえると
嬉しいです
ご訪問ありがとうございます。
こんにちは!さゆです。
前回は
改行コードとtxtファイル読み込みの方法を学習
日本語投稿に挑戦する準備が整いました✨
でも
プログラミングの世界は甘くありません💦
今回も思わぬ落とし穴にハマってしまいます😱
💥 再び文字化けエラー勃発
前回教えてもらったコードを使って
念願の日本語投稿に挑戦してみました!
でも、無情にも...
UnicodeEncodeError: 'latin-1' codec can't encode character '\uff08' in position 7: ordinal not in range(256)
さゆ:
「うーん💦だめだったよ><」
また既視感しかない文字化けエラーが
発生してしまいました😱
🔍 ChatGPTによる原因分析
ChatGPT:
「なるほど〜、これは完全に 日本語や全角文字が含まれた文字列をHTTPヘッダーに入れてしまっている ことで起きるエラーです😣💥
エラーメッセージのポイントはここ:
UnicodeEncodeError: 'latin-1' codec can't encode character '\uff08' in position 7」
「\uff08」というのは
全角の「(」のことなんだそうです💦
ChatGPT:
「🔍 原因まとめ
Twitter APIにPOSTリクエストを送るときの headers に日本語が混じってることが原因です。
つまり、access_token に間違って 投稿テキストが入ってしまっている か、 あるいは headers の設定方法にバグがある可能性が高いです。」
🛠️ 最初の修正試行
ChatGPTから修正案をもらいました:
ChatGPT:
「✅ 修正ポイント以下のように、headersの定義を再確認してください:
✍️ 修正版コード(重要部分のみ)
headers = { "Authorization": f"Bearer {access_token}", "Content-Type": "application/json" }
❌ charset=utf-8 を入れるとヘッダーが日本語を含んでしまい、このエラーになります!
________________________________________
✅ フル修正コード(.txtから読み込み形式)
import os
import requests from dotenv
import load_dotenv
# 環境変数を読み込む
load_dotenv()
access_token = os.getenv("ACCESS_TOKEN")
# 投稿内容をtxtから読み込む
with open("tweet_draft.txt", "r", encoding="utf-8") as f: tweet_text = f.read().strip()
# headersは英数字だけにすること!
headers = { "Authorization": f"Bearer {access_token}", "Content-Type": "application/json" }
data = { "text": tweet_text } response = requests.post("https://api.twitter.com/2/tweets", json=data, headers=headers)
if response.status_code == 201:
print("✅ 投稿成功!")
print(response.json())
else: print("❌ 投稿失敗…")
print(response.status_code)
print(response.text)
________________________________________
これで、日本語も改行も完璧に投稿できるようになるはずです!
もう一度試してみてください🕊」
😞 修正しても解決しない
修正したコードを実行しても同じエラーが💦
UnicodeEncodeError: 'latin-1' codec can't encode character '\uff08' in position 7: ordinal not in range(256)
ChatGPT:
「なるほど…それは悔しいですね…!🥹
ここまでの状況を踏まえて、エラーの原因を100%特定します。
________________________________________
🔥 結論から言うと…
UnicodeEncodeError: 'latin-1' codec can't encode character の原因は 「HTTPヘッダーに日本語(全角文字)が含まれている」 ことです。
問題は access_token に日本語が混ざっている可能性が高いです。
________________________________________
✅ チェックポイント3つ
① .env ファイルの ACCESS_TOKEN に日本語が入ってない?
② print(access_token) に 全角記号が混じってない?
③ headers の書き方が安全か確認← charset=utf-8 はダメ!
________________________________________
🛠 念のための修正版コード(最小構成)
import os
import requests from dotenv
import load_dotenv
load_dotenv()
access_token = os.getenv("ACCESS_TOKEN")
# 確認用(※安全に確認できる)
print(f"✅ access_token: {access_token}")
with open("tweet_draft.txt", "r", encoding="utf-8") as f:
tweet_text = f.read().strip()
headers = {
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json"
}
data = {
"text": tweet_text
}
response = requests.post("https://api.twitter.com/2/tweets", json=data, headers=headers)
if response.status_code == 201:
print("✅ 投稿成功!")
print(response.json())
else:
print("❌ 投稿失敗…")
print(response.status_code)
print(response.text)
________________________________________
さあ、ここが山場!一緒に突破しましょう💪🔥」
実行結果は...
✅ access_token: (access_token)
UnicodeEncodeError: 'latin-1' codec can't encode character '\uff08' in position 7: ordinal not in range(256)
😱 真犯人を発見!
________________________________________
❌ 今の .env にあるミス
ACCESS_TOKEN=1930574954040537088-mRTYRn... ← ✅ 正しい形式(半角のみ)
(access_token) ← これが読み込まれて UnicodeEncodeError が発生していました。」
💡 問題の本質を理解
Pythonは後から定義された値を優先するので
🌸 今回学んだこと
✅ .envファイルの重複問題
✅ 全角文字の危険性
✅ デバッグの大切さ
🔜 次回予告
.envファイルから全角文字を完全に削除して
💝 読者のみなさんへ
🛍️長時間作業のお供
今回も長時間パソコンと向き合っていて
目の疲れがひどかったです💦
特にエラーメッセージを何度も見ていると
集中力が途切れがちに😅
そんな時は、温かいお茶を飲んで一息つくのが一番ですね☕
\集中力UPや気分転換に!/
\夜間の作業が多い方に!/
\長時間のPC作業で目が疲れる方に!/
長時間のパソコン作業には必須アイテム👓
わたしのように画面を見続ける作業をする時に
目の疲れを軽減してくれます✨
デザインもおしゃれで
普段使いもできるのが嬉しいポイント🎶
\ChatGPT活用本/
わたしがChatGPTとの付き合い方を
学んだ入門書です📚
初心者でも分かりやすく
実践的な使い方が満載!
💡 こんなあなたにおすすめ
・ChatGPTを初めて使う方
・効果的な質問の仕方を知りたい方
・日常生活で活用したい方
\Logicool ワイヤレスマウス M575S トラックボール/
長時間のPC作業で手首が疲れるあなたに!
ChatGPTとのやり取りで
作業時間が増えたわたしには必需品です✨
💡 こんなあなたにおすすめ
・長時間のPC作業をする方
・手首の疲れを軽減したい方
・作業効率を上げたい方
山善 昇降式デスク
\スタンディングデスク 幅120cm/
立ったり座ったり、集中力を保ちながら学習!
新しいことを覚える時の気分転換に最適🏠
💡 こんなあなたにおすすめ
・集中力を持続させたい方
・健康的に作業したい方
・学習環境を整えたい方
楽天ROOMでは
「買ってよかったものだけを載せています。
最後まで読んでくださって
ありがとうございます✨
フォローや「いいね」もらえると
すっごく励みになります♪
それではまた