【问题标题】:French accents in MATLAB guiMATLAB gui中的法语口音
【发布时间】:2013-07-04 13:49:18
【问题描述】:

我正在开发一个带有 gui 的 MATLAB 程序。我想要法语的文本标签和按钮,但它不起作用。例如,代码中的单词'Paramètres'在gui上变成了Paramètres

我检查了文件编码,它是 utf-8。我能做些什么来解决这个问题?

这是我在代码中使用的一个命令的简单示例: tab2 = uitab('v0', hTabGroup, 'title','Paramètres des canaux');

谢谢。

【问题讨论】:

  • 如果有帮助的话;在Matlab R2013a 上,即使uitab 也一切正常。当所有数字都关闭时,您可以尝试title('Paramètres des canaux')吗?
  • 我正在使用Matlab R2010a,而您的命令title('Paramètres des canaux') 会导致相同的重音显示问题。标题写着“Paramètres des canaux”。

标签: matlab user-interface non-ascii-characters


【解决方案1】:

使用 HTML 怎么样?:

figure
hTabGroup = uitabgroup;
drawnow;
tab2 = uitab('v0',hTabGroup,'title','<html>Param&egrave;tres des canaux</html>');

有关 HTML 字符代码列表,请参阅 here

【讨论】:

  • 是的,就是这样!用html重写所有东西有点烦人,但如果它有效,那是值得的。谢谢!
  • 我对这些东西没有任何经验,但仅供参考,在 R2012b 中我收到此警告 - 警告:uitabgroup 对象未记录在案,其某些属性将在未来版本中过时。
  • 好的,所以真的不行。它适用于我的 tab2,但不适用于我的 tab1。很奇怪。
  • 您也可以在MatlabCentral 上提问(是的,目前所有 MathWorks.com 都已关闭)。 Yair Altman,过去有blogged about uitab,偶尔会回复那边的询问。
【解决方案2】:

要添加重音 aigu 使用

title('{Param\''etres des canaux}','interpreter','latex')

要添加重音,请使用

 title('{Param\`etres des canaux}','interpreter','latex')

【讨论】:

  • @user2482876 是的,我正在努力解决。
  • 这适用于标题,谢谢,但它不适用于 uitabuicontrol,因为它们没有 interpreter 属性。
【解决方案3】:

我在this stackoverflow page 上找到了答案。基本上,我只需在创建 GUI 之前将 MATLABencoding 设置为 UTF-8。命令很简单:

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

就是这样!

【讨论】:

  • 很遗憾,问题仍然存在(在 R2010a 中)。
  • @RodyOldenhuis:嗯,我正在使用MATLAB R2010a,这对我有用。唯一的问题是,有时我必须将命令传递两次才能使其工作。
  • 试试这个:for ii=1:30, feature('DefaultCharacterSet','UTF-8'); end; title(['Param' char(232) 'tres des canaux']);
  • @RodyOldenhuis:我不使用char()command。我直接使用真实角色。对我来说,这很有效:feature('DefaultCharacterSet','UTF-8'); title('Paramètres des canaux');
  • 嗯……不在这里。顺便说一句,这些字符应该是相同的......你在 Windows 上吗? Linux?
【解决方案4】:

由于某种原因,我在将字符串从 SO 复制粘贴到 MATLAB 时遇到困难,因为“è”显示为 char(65533)(而不是正确的 char(232))...

无论如何,我拼凑了一个小型转换实用程序,将字符串或单元字符串转换为它们的 Unicode-in-HTML 等效项,以补充 horchler 的回答:

function html = toHTML(strings)

    %% Initialize

    % Basic IO check
    if ~iscellstr(strings) && ~ischar(strings)
        error(...
            'toHTML:invalid_input',...
            ['Invalid input class: ''%s''.\n',...
            'Supported input types are ''char'' or a ''cell'' containing ''char''.'], class(strings));
    end

    % Provide support for
    %  - Single and multiline line char arrays    
    %  - Cellstrings
    wasChar = ischar(strings);
    if wasChar 
        if size(strings,1) > 1            
            strings(:, end+1) = char(10);            
        end
        strings = {strings}; 
    end

    %% Convert all strings to their unicode representation in HTML

    % Just for abbreviation 
    uf = {'UniformOutput',false};

    % Convert all characters to their HTML unicode representation 
    html = cellfun(@transpose, strings, uf{:});
    html = cellfun(@(x) cellstr(num2str(x(:)+0)), html, uf{:});
    html = cellfun(@(x) cellfun(@(y) ['&#' strtrim(y) ';'],x, uf{:}), html, uf{:});

    % Include HTML tags
    html = cellfun(@(x) ['<html>' [x{:}] '</html>'], html, uf{:});

    % Take care of newlining
    html = regexprep(html, '&#10;', '<br>');
    html = regexprep(html, '<br></html>$', '</html>');

    % Make output type consistent with input type
    if wasChar
        html = [html{:}]; 
    end

end

我目前也将其提交给 FEX。如果有人知道这样的事情是否已经存在,请告诉我。

【讨论】:

    【解决方案5】:

    我已经用这种技术解决了这个问题。

    在你的终端写下:

    export LC_CTYPE="en_US.ISO-8859-1"
    

    然后,启动 Matlab 并尝试:

    title('été');
    

    如果可行,您只需要在启动 Matlab 之前创建一个将执行导出命令的脚本。在您的 .bashrc 文件、启动 Matlab 的自定义脚本等中......

    我的解决方法是简单地创建一个自定义脚本(即我的 /home/username/bin 目录中的“mat”):

    #!/bin/bash
    cd /home/username/Matlab
    export LC_CTYPE="en_US.ISO-8859-1"
    /path/to/matlab/matlab
    

    然后,我在 /home/username 目录的 .bashrc 文件中创建了一个别名来启动脚本“mat”

    alias m="/home/proy/bin/mat &"
    

    【讨论】:

      【解决方案6】:

      如果在 matlab 脚本中存储带有重音字符的字符串,请尝试将 matlab 脚本的编码更改为 ANSI(例如,使用 Notepad++ 或 SublimeText)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-20
        • 1970-01-01
        • 2012-09-05
        • 1970-01-01
        相关资源
        最近更新 更多