名前がペルシア語 (ファルシ語) の .csv ファイルの内容を読みたいと思っています。Matlab はこのファイルを検出できないようです。次のコード行を使用します。
a = csvread( <Persian filename> );
名前がペルシア語 (ファルシ語) の .csv ファイルの内容を読みたいと思っています。Matlab はこのファイルを検出できないようです。次のコード行を使用します。
a = csvread( <Persian filename> );
これは、コマンド ラインとエディターを使用して文字を 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 を通過する必要はありません。テキスト領域。