はてなブログ移行時の文字化けについて解決した。これは自分がはてなダイアリーをいうならばハックして無理に本来はてなダイアリーでは使えない漢字を入力していたから起こった問題ではあるのだが、ネチネチとはてなの運営の方に対応を要求してかなわなかったものだ。
しかしやってみたら割と簡単にできた。変な漢字はなにかのタイミングでHTML数値文字参照に変換されてたようで、もっとあったような気がしたがあまり拾えなかった。やりかたは はてなダイアリーでMovableType形式で出力したものと、インポート後のはてなブログでMovableType形式で出力したものから英数字記号を消して diff をとり、両方で違うものをピックアップしていくというもので、それならすぐにできた。
こんな感じのものを書いた。
import difflib import re oReEn = re.compile("[\0-~]") def parseMT(sM): dEnt = {} for eM in sM.split("--------\n"): aEnt = eM.split("-----\n") dHead =dict(_.split(":",1)for _ in aEnt[0].split("\n") if ":" in _ ) if "DATE" in dHead: aDate = dHead["DATE"].strip().split(" ")[0].split("/") sDate = "-".join((aDate[2],aDate[0],aDate[1])) sTxt = aEnt[1] sTxt = re.sub(oReEn,"",sTxt) if sDate in dEnt: dEnt[sDate] += sTxt else: dEnt[sDate] = sTxt return dEnt #はてなダイアリーからエクスポートしたもの dOld = parseMT(open("inudaisho.txt","r").read()) #はてなブログからエクスポートしたもの dNew = parseMT(open("inudaisho.hatenablog.com.export.txt","r").read()) aRes = [] for sD in sorted(dOld.keys()): sOld = dOld[sD] sNew = dNew[sD] if sOld != sNew: aRes.append(sD) aRes.append("".join(difflib.ndiff(sOld,sNew))) open("nDiff.txt","w").write("\n".join(aRes))
そしてこの出力した差分ファイルをvimで開いて
/- .+
でこれ。
この方法で探せるものはあんまりなかったので直接ブログひらいて適当に修正した。ひょっとしたら(株)はてなの営業努力で数値文字参照に変換してたのかもしれないが、その変換が間違っていたらもう手も付けれない。それよりも今はまちがってmarkdown形式として登録してしまったところだが.... 今いちいち修正しているとどうもmarkdown形式ということで登録されても中身までは代わっていないようだ。そんなら改めて上書きできるかな? → できた。
タイガー 魔法瓶 電気 ケトル 800ml パールブラック 蒸気レス わく子 PCH-G080-KP Tiger
- 出版社/メーカー: タイガー魔法瓶(TIGER)
- 発売日: 2013/08/23
- メディア: ホーム&キッチン
- この商品を含むブログを見る
タイガー 魔法瓶 電気 ケトル 800ml ホワイト わく子 PCF-G080-W Tiger
- 出版社/メーカー: タイガー魔法瓶(TIGER)
- 発売日: 2015/06/21
- メディア: ホーム&キッチン
- この商品を含むブログを見る