こちらのQ&Aは、
途中で質問の内容が変わってしまったため、
一見すると質問と回答が食い違ってしまっています。
そのため、こちらに一連の流れを記載しておきます。
ご迷惑をおかけいたします。
【当初の質問:HTMLファイルをWEB上にアップロードすると文字コードがISO-8859-1になってしまう】
BeautifulSoupでスクレイピングをすると、BeautifulSoup上では、自分でアップロードしたWEBサイトの文字コードが「ISO-8859-1」として認識されてしまう。ローカル上では文字コードが「UTF-8」になっているため、WinSCPでアップロードするときに文字コードが変換されてしまうのでは?
↓
しかし、WEB上にアップロードされているHTMLファイルをローカルにダウンロードし、文字コードを調べてみるとUTF-8のまま。つまり、WEB上のHTMLファイルもUTF-8のままであり、WinSCPによって文字コードが変換されているわけではない。
↓
回答者様のご指摘により、「WEBサイト自体に問題があるのではなく、BeautifulSoupでスクレイピングする際に文字コードが変換されている」ことが判明。
↓
【質問の変更:PythonのBeautifulSoupでスクレイピングするとhtml(utf-8)の文字コードがISO-8859-1になってしまう】
HTMLではcharsetで文字コードをUTF-8に指定しているにもかかわらず、なぜスクレイピングの際に文字コードが変換されてしまうのか。
↓
レンタルサーバーの仕様により、ResponseのContent-Typeの文字コードを書き換えられてしまう(指定したcharsetを無視されてしまう)。その結果BeautifulSoupがUTF-8を認識できず、代わりにISO-8859-1として認識してしまい、その結果文字化けが発生する。
↓
解決する場合には、.htaccessでcharsetを修正する方法などが考えられる。ただし、今回はWEBサイト自体に問題がないことが分かったため、文字化けはBeautifulSoupサイドで工夫することで解決。
およそこのような流れになっています。
ご迷惑をおかけしてしまい申し訳ございません。
↓↓↓↓↓↓↓↓
なお、当初の質問は下記の通りです。
↓↓↓↓↓↓↓↓
文字コードについて困っています。
WEBサイトをアップロードするにあたり、
ローカル上でhtmlを編集する際には、htmlファイルはutf-8になっており、
htmlのhead内でも下記のように文字コードを指定しています。
html
1<!DOCTYPE html> 2<html> 3<head> 4<meta http-equiv="content-language" content="ja"> 5<meta charset="UTF-8">
ところが、WEB上にアップロードすると、文字コードがISO-8859-1になってしまっているようです。
表面上は文字化けがないので、気づかなかったのですが、
pythonのbeautiful soupでスクレイピングをしてみたところ、
文字化けが発生し、文字コードがおかしくなってしまっている(ISO-8859-1になっている)ことに気が付きました。
OSはwindows 10、
FTPクライアントソフトにはWinSCPを使っています。
ファイルの編集や保存に当たり、
Dreamweaver、Atom、terapadなどを使ってみましたが、どれも結果は同じでした。
少なくともローカル上では確かにutf-8にもかかわらず、アップロード後に文字コードが変換されてしまうようです。
原因はわかりますでしょうか・・・?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/18 14:57
2018/10/18 15:30
2018/10/18 22:35
2018/10/19 00:11
2018/10/19 04:08