テキストデータの文字コードをshift-jisにした時に、簡単に文字化を見つける方法・ツールはないでしょうか?
InDesign(CS3)で作った書籍データからテキストを書き出し、電子書籍(DotBook)を制作しようと思っています。
DotBookは文字コードがshift-jisなのですが、テキストデータの文字コードをshift-jisに変えた時に、文字化けした文字(shift-jisでは表現できない文字)を簡単に見つける方法を探しています。
何十万文字もある原稿では目視で探すのが大変です。文字化けのところが色が変わるようなテキストエディタがあればいいのですが。
まず、shift-jisではなく、Shift_JIS(アンダーバー)と書きましょう。IANAの登録名がShift_JISなので、WEBの設定ではShift_JISと書かなくてはいけません。その他でも、シフトJISと書くならともかく、わざわざIANAの登録名と違う書き方をする利点はありません。
文字化け後は「?」になるので、文字化け前のUnicodeデータの段階でチェックする必要があります。
Windows上のVBAだったら、Strconv(文字列、vbFromUnicode)したものをさらにStrconv(文字列、vbUnicode)して元の文字と変化したものを抽出すれば良いです。
ただし、Windows上のShift_JISは実際はCP932なので、CP932にあってShift_JISに無い文字を別途取り除く必要があります。
—————————-
Microsoft Wordマクロで作ると、こんな感じ。
私はWordマクロよく分からないのですが(苦笑)、昔作ったものを載せときます。
ただし、波ダッシュも検出してしまいますが愛嬌と言うことでお願いします。
—————————-
Option Explicit
Sub Unicode強調()
‘//JIS X0208外の文字をチェックして、背景色を設定する。
‘//ただしJIS X0208にある文字だが、U+301C 波ダッシュも、背景色が付いてしまう。
Dim r As Range
Dim strMoji As String
Dim lngMojiCd As Long
Application.ScreenUpdating = False
For Each r In ActiveDocument.Characters
strMoji = r.Text
‘//Unicodeチェック
If StrConv(StrConv(strMoji, vbFromUnicode), vbUnicode) <> strMoji Then
r.HighlightColorIndex = wdYellow
Else
‘//NEC特殊文字、IBM拡張文字チェック
lngMojiCd = Asc(strMoji)
If lngMojiCd > 0 Then
‘//Nop 半角文字
ElseIf lngMojiCd > -5468 Then ‘//熙
r.HighlightColorIndex = wdBrightGreen
Else
If lngMojiCd >= -30912 And lngMojiCd <= -30820 Then '//① ∪(NEC特殊文字の「∪」) r.HighlightColorIndex = wdBrightGreen ElseIf lngMojiCd = -32416 Then '//全角チルダ r.HighlightColorIndex = wdPink End If End If End If Next r Application.ScreenUpdating = True End Sub ---------------------------- 以下、確認用のテストデータ アイウエオ アイウエオ あいうえお NEC特殊文字には後でJIS X0208に追加された字形があります。 ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯ ⑰⑱⑲⑳ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ・㍉ ㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜ ㎝㎞㎎㎏㏄㎡・・・・・・・・㍻ 〝〟№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼ ≒≡∫∮∑√⊥∠∟⊿∵∩∪ 亜 唖娃-凜熙 手を繫ぐ、手と手を繋ぐ 酒を呑む、酒に吞まれる 瘦せる人、痩せないひと 処方箋と処方䇳 柿(かき) と杮(こけら) はよく似てる ~ U+FF5E (全角チルダ) 〜 U+301C (波ダッシュ) 「髙(はしごたか)」と「﨑(たちさき)」はIBM拡張文字
詳しい解説をありがとうございました。私にはかなりハードルが高そうですがチェレンジしてみます。