3

名前がペルシア語 (ファルシ語) の .csv ファイルの内容を読みたいと思っています。Matlab はこのファイルを検出できないようです。次のコード行を使用します。

a = csvread( <Persian filename> );
4

1 に答える 1

1

これは、コマンド ラインとエディターを使用して文字を Matlab 文字列値に変換することの問題だと思います。Matlab GUI は Java で実装されているため、内部で Unicode 文字列を使用しています。Matlabcharの値は 16 ビット Unicode です。しかし、M ファイルを保存すると、Matlab またはロケールで設定した文字エンコーディングで出力される場合があります。また、Matlab GUI で使用しているフォントがファイル名の文字をサポートしていない可能性があるため、「?」が表示される場合があります。文字列の値が内部的には正しい場合でも、コマンド プロンプトで記号やその他のプレースホルダーが表示されます。

NTFS ファイル システムはファイル名を Unicode で保存するため、データ レベルでの文字エンコーディングは、ファイル自体を取得する際に問題になることはありません。ファイルの内容がどのように解釈されるかに影響するだけです。

これを対話的に 1 回だけ行う必要がある場合は、 を使用uigetfileして対話的にファイルを選択することにより、文字列入力の問題を回避できます。

a = csvread( uigetfile() );

ペルシャ語の名前のファイルにある単純な「8.3」ファイル名を使用して取得することもできます。Windows コマンド プロンプトで、 を使用dir /xして、長いファイル名に対応する短い 8.3 ファイル名を表示します。これらは単純な ASCII 文字なので、Matlab コマンド ウィンドウまたはエディターに入力しても問題ありません。たとえば、 という名前のファイルを作成しましたが、そのファイルتاده.txtの 8.3 名は6448~1.TXT.

08/09/2013  01:10 AM    <DIR>                       .
08/09/2013  01:10 AM    <DIR>                       ..
08/09/2013  01:10 AM                 0 6448~1.TXT   ????.txt

f = dir();プログラムによるアクセスのテストとして、 ( not f = system('dir') )を使用してディレクトリ内のすべてのファイル名を取得し、どれが必要かを確認してからcsvread、それを に渡してみてください。したがって、どの文字も GUI を通過する必要はありません。テキスト領域。

于 2013-08-09T05:06:14.463 に答える