仕事と家事で毎日バタバタ…

ずぼら主婦さゆです。

 

単身赴任中の夫、わたし、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ファイルの中身を共有)」
 
ChatGPT: 
「ありがとう、確認しました。問題のポイントを整理すると、.env ファイルに「重複した ACCESS_TOKEN の定義」があり、しかも片方に全角文字が含まれている(=エラーの原因)という状況です。
________________________________________
❌ 今の .env にあるミス
ACCESS_TOKEN=1930574954040537088-mRTYRn... ← ✅ 正しい形式(半角のみ)
ACCESS_TOKEN=(access_token) ← ❌ 全角文字を含む。しかも重複! 
Python で os.getenv("ACCESS_TOKEN") を呼び出すと、後ろの方の ACCESS_TOKEN が優先されるため、
(access_token) ← これが読み込まれて UnicodeEncodeError が発生していました。」
 
 

💡 問題の本質を理解

 
つまり、わたしの.envファイルには同じ項目が2回書かれていて

しかも2回目の方に全角の括弧「()」が含まれていたんです😱

Pythonは後から定義された値を優先するので
正しいアクセストークンではなく
 
「(access_token)」という全角文字を含むダミー文字列が読み込まれていました💦
 
 

🌸 今回学んだこと

 
✅ エラーメッセージの重要性
→「\uff08」は全角の「(」を意味する

✅ .envファイルの重複問題
→同じ項目を複数回定義すると後の方が優先される

✅ 全角文字の危険性
→設定ファイルに全角文字を使ってはいけない

✅ デバッグの大切さ
→print文で実際の値を確認することの重要性
 
プログラミングって
本当に細かいところでつまずくんですね💦
 
でも、一つずつ原因を特定していけば
必ず解決できる💪
 
 

🔜 次回予告

 
次回は
「.envファイル修正とOAuth認証エラーとの闘い」
をお届けします💪

.envファイルから全角文字を完全に削除して
いに文字化けエラーを解決!

でも
今度は別のエラーが待っていました😅

 
次回もお楽しみに〜!
 

💝 読者のみなさんへ

 
エラーって本当に心が折れそうになりますが
一つずつ解決していけば必ず道は開けます✨
 
この記事が少しでもお役に立ったら
いいね♡やコメント💬をいただけると嬉しいです😊
 
 

🛍️長時間作業のお供

 

今回も長時間パソコンと向き合っていて

目の疲れがひどかったです💦


特にエラーメッセージを何度も見ていると

集中力が途切れがちに😅


そんな時は、温かいお茶を飲んで一息つくのが一番ですね☕

 

 

 

\集中力UPや気分転換に!/

2種から選べる 煎 レギュラーコーヒー プレミアムドリップコーヒー(10g*20袋)【煎(せん)】[ドリップコーヒー]

右矢印プレミアムドリップコーヒー(10g*20袋)

 

 

\夜間の作業が多い方に!/

【2年保証】Lepro ledデスクライト ACアダプター付き 目に優しい JIS規格 AA形相当 卓上ライト電気スタンド学習用 テーブルライト 学習机 ライト 勉強机 コンセント式 ledライト 卓上スタンド おしゃれテレワーク読書灯学生 学習ライト

右矢印目に優しい LEDデスクライト

 

 

\長時間のPC作業で目が疲れる方に!/

【眼科で採用◎圧倒的レビュー数3,000件!!】 JIS検査済 ブルーライトカットメガネ メガネ ブルーライトカット 紫外線カット 度なし 伊達メガネ PCメガネ 軽量 パソコン おしゃれ メンズ レディース クリアレンズ mujina0008

右矢印ブルーライトカット眼鏡

 

長時間のパソコン作業には必須アイテム👓 

わたしのように画面を見続ける作業をする時に

目の疲れを軽減してくれます✨ 

デザインもおしゃれで

普段使いもできるのが嬉しいポイント🎶

 

 

 

\ChatGPT活用本/

 

わたしがChatGPTとの付き合い方を

学んだ入門書です📚
初心者でも分かりやすく

実践的な使い方が満載!

 

💡 こんなあなたにおすすめ 

・ChatGPTを初めて使う方

・効果的な質問の仕方を知りたい方 

・日常生活で活用したい方

 

 

\Logicool ワイヤレスマウス M575S トラックボール/

 

長時間のPC作業で手首が疲れるあなたに!
ChatGPTとのやり取りで
作業時間が増えたわたしには必需品です✨

 

💡 こんなあなたにおすすめ
・長時間のPC作業をする方
・手首の疲れを軽減したい方
・作業効率を上げたい方

 

 

山善 昇降式デスク
\スタンディングデスク 幅120cm/

 

立ったり座ったり、集中力を保ちながら学習!
新しいことを覚える時の気分転換に最適🏠

 

💡 こんなあなたにおすすめ
・集中力を持続させたい方
・健康的に作業したい方
・学習環境を整えたい方

 

 

 

楽天ROOMでは

「買ってよかったものだけを載せています。

 

 

 

 

最後まで読んでくださって

ありがとうございます✨

 

 


フォローや「いいね」もらえると

すっごく励みになります♪

フォローしてね



それではまたバイバイ

 

 

 

にほんブログ村 主婦日記ブログ パート主婦へ
にほんブログ村

 

人気ブログランキング
人気ブログランキング