String 命令行中的希伯来语-matlab

String 命令行中的希伯来语-matlab,string,matlab,unicode,hebrew,String,Matlab,Unicode,Hebrew,可能重复: 沙洛姆 我试图在matlab中使用希伯来字符串。但当我试图将希伯来语字符串赋值给变量时,它不会赋值。例如: a=‘א’ a= 你知道为什么吗?,这是matlab用标准的2字节char格式表示的。它可能不支持以这种方式输入 你可能不得不这么做 a = char(1488); % 1488 is UTF-16 for aleph 然后以UTF-16可读的方式输出 如果你想简单地把希伯来语写进一个人物的标题或什么的话,你可以直接这样写: title('\aleph') 如果您尝

可能重复:

沙洛姆
我试图在matlab中使用希伯来字符串。但当我试图将希伯来语字符串赋值给变量时,它不会赋值。例如:

a=‘א’

a=

你知道为什么吗?

,这是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. 

但是,如果您设置了希伯来语,您的计算机可能会支持它。

在这种情况下,我会这样做来读取/写入文件:

%# 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 =
אאאאאאאאאא
但是,显示带有函数的字符串失败(有人能确认这是否真的像声明的那样有效吗?):

我甚至检查了正确的字体是否可用:

>> fontsNames = fontinfo();
>> idx = ~cellfun(@isempty, strfind(lower(fontsNames),'david'));
>> fontsNames(idx)'
ans = 
    'David'
    'David Bold'
    'David Regular'
    'David Transparent'
另一方面,正如我在a中所展示的,在GUI中显示此文本的解决方案是使用Java(MATLAB基于Java Swing组件):


(注意,通过使用UICONTROL,即使是常规的“Arial”字体也能显示正确的输出!)

顺便说一句,那篇文章中的答案是调用
文本(0.6,0.5,'fontname','david','rotation',180,'fontsize',50,'color','r')
在我的机器上只生成框,而不是希伯来文,可能是因为我没有设置希伯来文字符。你可能也会发现这很有用:我没有收到任何错误,但仍然不起作用:(
>> fontsNames = fontinfo();
>> idx = ~cellfun(@isempty, strfind(lower(fontsNames),'david'));
>> fontsNames(idx)'
ans = 
    'David'
    'David Bold'
    'David Regular'
    'David Transparent'
figure('Position',[300 300 500 50]), drawnow
uicontrol('Style','text', 'String',str, ...
    'Units','normalized', 'Position',[0 0 1 1], ...
    'FontName','David', 'FontSize',30);