2011-10-13 29 views
2

可能重複:
text('hebrew string') matlab希伯來語在命令行 - MATLAB

沙洛姆
我試圖用MATLAB希伯來語字符串工作。但是當我試圖將希伯來字符串分配給一個變量時,它不會分配它。例如:

一個= 'א'

A =

任何想法,爲什麼?

+0

+1到@zellus偉大的發現! –

+1

順便說一句,這個帖子中的答案,即文本(0.6,0.5,'ירוק','fontname','david','rotation',180,'fontsize','50','color', 'r')'只在我的機器上生成盒子,而不是希伯來語,可能是因爲我沒有在我的機器上設置希伯來字符。 –

+0

你也許會發現這個很有用:[MATLAB:如何顯示從文件中讀取的UTF-8編碼文本?](http://stackoverflow.com/questions/6863147/matlab-how-to-display-utf-8-編碼文本讀取文件) – Amro

回答

2

Aleph is in UTF-16,其中matlab用其標準的2字節char格式表示。它可能不支持這種方式的輸入。

你可能需要做

a = char(1488); % 1488 is UTF-16 for aleph 

然後將它輸出某種方式UTF-16可讀。

如果你想簡單地把希伯來語成數字標題或東西,那麼你可以直接寫乳膠這樣的:

title('\aleph') 

如果你想利用Matlab進行文字處理,我認爲它會但你可能無法查看Matlab命令窗口中的字符。

更新:在我的系統甚至寫在希伯來語編碼文件,不支持:

fid = fopen('c:\temp\chris.txt','w','native','hebrew'); 
Warning: The encoding 'ISO-8859-8' is not supported. 
See the documentation for FOPEN. 

但是,也許你的機器支持,如果您有希伯來語語言設置。

+0

我沒有收到任何錯誤,但它仍然無效:( – user552231

2

這是我會做的讀/寫文件,在這種情況下什麼:

%# some Hebrew characters 
hebrewString = repmat(char(1488),1,10);  %# 'אאאאאאאאאא' 

%# convert and write as bytes 
b = unicode2native(hebrewString,'UTF-8'); 
fid = fopen('file.txt','wb'); 
fwrite(fid, b, '*uint8'); 
fclose(fid); 

%# read bytes and convert back to Unicode string 
fid = fopen('file.txt', 'rb'); 
b = fread(fid, '*uint8')';   %' 
fclose(fid); 
str = native2unicode(b,'UTF-8'); 

%# compare and check 
isequal(str,hebrewString) 
double(str) 

爲了顯示這個字符串,我們需要MATLAB知道的Unicode字符致電:

feature('DefaultCharacterSet','UTF-8'); 

現在在命令提示符下,你可以試試:

>> str 
str = 
אאאאאאאאאא 

然而,隨着顯示字符串函數失敗(有人可以確認這個answer實際上是否像聲稱的那樣工作?)

hTxt = text(0.1,0.5, str, 'FontName','David', 'FontSize',30); 
set(hTxt, uisetfont(hTxt)) 

TEXT

我甚至檢查了正確的字體可供選擇:

>> fontsNames = fontinfo(); 
>> idx = ~cellfun(@isempty, strfind(lower(fontsNames),'david')); 
>> fontsNames(idx)' 
ans = 
    'David' 
    'David Bold' 
    'David Regular' 
    'David Transparent' 

在另一方面,正如我在previous answer of mine表明,解出此GUI中的文本是使用Java(MATLAB UICONTROL基於Java Swing組件):

figure('Position',[300 300 500 50]), drawnow 
uicontrol('Style','text', 'String',str, ... 
    'Units','normalized', 'Position',[0 0 1 1], ... 
    'FontName','David', 'FontSize',30); 

UICONTROL

(請注意,使用UICONTROL,甚至經常 '宋體' 字體顯示正確的輸出!)