4

さて、ここにさらに別の文字エンコードの質問があります。これは、Unicodeのすべてについての私の無知を示​​しています。

Microsoft Excel.xlsファイルからデータを読み取り、ESRIシェープファイルに保存しています.shp。Excelのバージョンが5.0を超える場合、ExcelファイルのテキストはUnicodeとして保存されます。ただし、Unicode(および特にUTF-8シェープファイルのサポートには一貫性がないため、まったく使用しないでください。ただし、シェープファイルは古い学校のコードページをサポートしています。

Unicode文字列を未知であるが特定のコードページの文字列に変換する必要がある状況でのベストプラクティスは何ですか?

私が理解しているように、Unicode文字列には複数の「コードページ」の文字を含めることができます。したがって、使用する「最適な」コードページを何らかの方法で見積もり、サポートされていないすべての文字をそのコードページ(または恐ろしい?)で最も近いものに変換する必要があると思います。これは通常のアプローチですか?

私は間違いなくシステムコードページ以上のものを使うことができます。.shpファイルはファイルを使用して属性データを格納するため.dbf、少なくとも.dbfフォーマットで指定されたすべてのコードページがサポートされている必要があります(xBaseフォーマットの説明を参照)。サポート されているコードページ は次DOS USAのとおりです。、、、、、、、、、、、、、、、、、、、、DOS Multilingual, Windows ANSI, Standard Macintosh_ EE MS-DOS_ Nordic MS-DOS_Russian MS-DOSIcelandic MS-DOSKamenicky (Czech) MS-DOSMazovia (Polish) MS-DOSGreek MS-DOS (437G)Turkish MS-DOSRussian MacintoshEastern European MacintoshGreek MacintoshWindows EERussian WindowsTurkish WindowsGreek Windows

さらに、一部のアプリケーションは、使用する*.cpg追加のコードページを指定するファイルの使用をサポートしています(ただし、のサポートは理解しておりutf-8、他の多くのコードページは制限されていると思います)。

私は汎用ツールを開発しようとしているので、.xlsファイル内のUnicodeの内容については何も想定できません。

4

2 に答える 2

1

あなたのテキストは何語ですか?文字の大部分がASCIIである場合は、元のUTF-8でエンコードされたテキストをそのように記述するのがおそらく最善です。UTF-8に対応していないプログラムでも、ASCIIテキストを正しく読み取り、不明な文字に対して文字化けしたASCIIを表示します。

于 2010-07-03T03:37:56.850 に答える
1

Unicode文字列を未知であるが特定のコードページの文字列に変換する必要がある状況でのベストプラクティスは何ですか?

ファイル形式によって異なります。€XMLやJSONなどのUnicodeの「エスケープシーケンス」をサポートしている場合は\u20AC、それらを使用すれば、情報が失われることはありません。そうでない場合は、別のアプローチが必要です。

したがって、使用する「最適な」コードページを何らかの方法で見積もる必要があると思います。

一般に、非Unicodeシステムでは、任意のコードページではなく、デフォルトのエンコーディングに文字を変換します。

編集:コードページの選択肢があります:

01h     DOS USA                      code page 437
6Ah     Greek MS-DOS (437G)          code page 737
02h     DOS Multilingual             code page 850
64h     EE MS-DOS                    code page 852
6Bh     Turkish MS-DOS               code page 857
67h     Icelandic MS-DOS             code page 861
65h     Nordic MS-DOS                code page 865
66h     Russian MS-DOS               code page 866
C8h     Windows EE                   code page 1250
C9h     Russian Windows              code page 1251
03h     Windows ANSI                 code page 1252
CBh     Greek Windows                code page 1253
CAh     Turkish Windows              code page 1254
04h     Standard Macintosh           code page 10000
98h     Greek Macintosh              code page 10006
96h     Russian Macintosh            code page 10007
68h     Kamenicky (Czech) MS-DOS
69h     Mazovia (Polish) MS-DOS
97h     Eastern European Macintosh

コードページを選択するには、次のことをお勧めします。

  1. データがプレーンASCIIであるかどうかを確認してください。その場合、どのコードページを選択してもかまいません。
  2. そうでない場合は、データを正確に表すことができるコードページ(または、できない場合は、表現できない文字を最小化するコードページ)を見つけてください。最初にコードページ1252を試してから、他の125xコードページを試してください。ボックス描画文字がない限り、DOSコードページを気にしないでください。

次に、サポートされていないすべての文字を、そのコードページ(または恐ろしい?)で最も近い文字に変換します。これは通常のアプローチですか?

これは、UTF-8ファイルをwindows-1252またはEBCDICに変換する必要がある場合に私たちが採用しているアプローチです。Unidecodeを使用して、「最も近い近似値」を生成しました。

ただし、句読点ではなく、文字と数字のみを置き換えます。「」を「」に置き換えると、いくつかのファイル形式が壊れます。

于 2010-07-03T22:17:54.417 に答える