56

ANSI でサポートされていないアクセント付きの文字が含まれているため、ANSI としてエンコードされるべきではない ANSI でエンコードされたテキスト ファイルがあります。私はむしろUTF-8で作業したいと思います。

データは正しくデコードできますか、それともトランスコーディングで失われますか?

どのようなツールを使用できますか?

ここに私が持っているもののサンプルがあります:

ç é

文脈から (café は café である必要があります)、これらは次の 2 つの文字であることがわかります。

ç é
4

12 に答える 12

29

Notepad ++で次の手順に従います

1-元のテキストをコピーします

2-メモ帳++で、新しいファイルを開き、エンコーディングを変更します->元のテキストが続くと思われるエンコーディングを選択します。特定のプログラムでは Unicode ファイルが ANSI として読み取られる場合があるため、エンコーディング "ANSI" も試してください。

3-貼り付け

4- 次に、同じメニューをもう一度行って Unicode に変換します: Encoding -> "Encode in UTF-8" ("Convert to UTF-8" ではありません)。

上記の手順は、ほとんどの言語に適用されます。notepad ++に貼り付ける前に元のエンコーディングを推測し、同じメニューを使用して別のUnicodeベースのエンコーディングに変換して、読み取り可能になるかどうかを確認するだけです.

ほとんどの言語は、2 つの形式のエンコーディングで存在します。1- 古いレガシー ANSI (ASCII) 形式であるわずか 8 ビットが、最初はほとんどのコンピュータで使用されていました。8 ビットでは 256 の可能性しか許されず、そのうちの 128 は通常のラテン文字と制御文字であり、最後の 128 ビットは PC の言語設定に応じて異なる方法で読み取られました 2- 新しい Unicode 標準 (最大 32 ビット) は各文字に固有のコードを提供現在知られているすべての言語で、さらに多くの言語で利用できます。ファイルが Unicode の場合、その言語のフォントがインストールされている任意の PC で理解できるはずです。UTF-8 でさえ最大 32 ビットであり、UTF-16 および UTF-32 と同じくらい広いことに注意してください。ディスク容量を節約するためだけに、ラテン文字で 8 ビットを維持しようとします。

于 2013-12-18T06:15:40.223 に答える
21

編集: より複雑な解決策に入る前に排除する簡単な可能性: ファイルを読んでいるテキスト エディターで文字セットを utf8 に設定しようとしましたか? これは、あなたが cp1252 と設定されたエディターで読んでいる utf8 ファイルを誰かが送信した場合に発生する可能性があります。

2 つの例を挙げると、これは utf8 が 1 バイト エンコーディングのレンズを通して読み取られるケースであり、おそらく iso-8859-1、iso-8859-15、または cp1252 のいずれかです。他の問題キャラの作例を載せていただけると、もっと絞り込めるはずです。

文字の目視検査は誤解を招く可能性があるため、基になるバイトも確認する必要があります。画面に表示される § は 0xa7 または 0xc2a7 のいずれかであり、それによって、実行する必要がある文字セット変換の種類が決まります。

すべてのデータがまったく同じように歪められていると仮定できますか?つまり、データは同じソースから取得され、同じ一連の変換を経て、たとえばテキストに é が 1 つもなく、常に?その場合、一連の文字セット変換で問題を解決できます。現在の環境と使用しているデータベースについてより具体的に説明できる場合は、ここの誰かがおそらく適切な変換を実行する方法を教えてくれるでしょう.

それ以外の場合、問題の文字がデータの特定の場所でのみ発生している場合は、「著者はテキストに ç を挿入することを意図していないため、表示されるたびにç" に置き換えます。後者のオプションはより危険です。第一に、著者の意図に関するこれらの仮定が間違っている可能性があるためです。第二に、すべての問題文字を自分で見つける必要があるためです。テキストが多すぎて視覚的に検査できない場合や、書かれている場合は不可能になる可能性があります。あなたにとって外国の言語または書記体系で。

于 2008-09-25T18:31:45.693 に答える
9

ã§ や é のような文字列が表示される場合、通常は UTF-8 ファイルが ANSI (または類似の) 形式で読み込まれるプログラムによって開かれていることを示しています。次のような Unicode 文字:

U+00C2 サーカムフレックス付きのラテン大文字 A
U+00C3 チルダ付きのラテン大文字 A
U+0082 ここで改行を許可
U+0083 ここで改行なし

UTF-8 が使用する可変バイト方式のため、ANSI テキストに表示される傾向があります。この戦略は、ここで非常によく説明されています。

ユーザーにとっての利点は、これらの奇妙な文字の出現により、誤った変換のインスタンスを比較的簡単に見つけて置き換えることができることです。

ANSI は常に 1 文字あたり 1 バイトを使用するため、この状況は単純な検索と置換操作で処理できると思います。または、次のように、問題のあるシーケンスと目的の文字との間のテーブル マッピングを含むプログラムを使用すると、より便利になります。

“ -> “ # は開始の二重中引用符にする必要があります “
? -> ” # は終了二重中引用符でなければなりません

英語であると仮定すると、任意のテキストには、比較的少数の異なる種類の置換があります。

それが役立つことを願っています。

于 2008-09-25T12:40:30.093 に答える
8

コマンドラインから vim を使用:

vim -c "set encoding=utf8" -c "set fileencoding=utf8" -c "wq" filename
于 2008-09-25T09:34:30.897 に答える
4

iconv を使用します - 文字セット間でテキスト ファイルを変換する最良の方法を参照してください。

于 2008-09-25T09:43:13.140 に答える
2

崇高なテキスト エディターで、ファイル -> エンコーディングを使用して再度開く -> 正しいエンコーディングを選択します。

通常、エンコーディングは自動検出されますが、そうでない場合は上記の方法を使用できます。

于 2016-06-29T13:42:37.527 に答える
1

ファイルに疑問符が表示される場合、またはアクセントが既に失われている場合は、utf8 に戻っても問題は解決しません。たとえば、カフェがカフェになった場合 - エンコーディングを変更するだけでは役に立ちません (元のデータが必要になります)。

ここにテキストを貼り付けていただけますか。回答に役立ちます。

于 2008-09-25T09:50:19.720 に答える
1

ファイルのエンコーディングを自動検出する簡単な方法を見つけました。ファイルをテキスト ファイルに変更し (Mac ではファイル拡張子を .txt に変更)、それを Mozilla Firefox ウィンドウ (または [ファイル] -> [開く]) にドラッグします。Firefox はエンコーディングを検出します - 表示 -> 文字エンコーディングで検出された内容を確認できます。

正しいエンコーディングがわかったら、TextMate を使用してファイルのエンコーディングを変更しました。ファイル -> エンコーディングを使用して再度開き、エンコーディングを選択します。次に、ファイル -> 名前を付けて保存し、エンコーディングを UTF-8 に変更し、行末を LF (または必要なもの) に変更します。

于 2010-03-23T19:26:01.897 に答える
1

漢字で発生したコードページの問題の解決策を探しているときにこの質問を見つけましたが、最終的に私の問題は、Windows が UI に正しく表示しないという問題でした。

他の誰かが同じ問題を抱えている場合は、Windows のローカルを中国に変更してから再度元に戻すだけで解決できます。

ここで解決策を見つけました:

http://answers.microsoft.com/en-us/windows/forum/windows_7-desktop/how-can-i-get-chinesejapanese-characters-to/fdb1f1da-b868-40d1-a4a4-7acadff4aafa?page=2&auth= 1

また、メモ帳++でデータを見ることがWindowsについて私にヒントを与えたので、ガブリエルの答えを支持しました。

于 2016-01-28T11:47:27.457 に答える
0

chardetのようなファイルのエンコーディングを検出しようとするプログラムがあります。次に、iconvを使用して別のエンコーディングに変換できます。ただし、これには、元のテキストがそのままで、情報が失われないことが必要です(たとえば、アクセントやアクセント付き文字全体を削除するなど)。

于 2008-09-25T10:09:38.770 に答える
0

そして、やや古いrecodeプログラムがあります。

于 2008-09-25T09:47:41.740 に答える