How to display Chinese character in gui table / command window

Hello, I want to display Chinese character in gui table or command window, how to do that? Such as I want "单位" displayed in command window, I use
str = '单位'
then I got this
str =
When I read EXCEL by GUI table, it is same. What can I do? And I do not want to change any property or setting with my environment. So is there some code I can use like
str = ['<html> strtype="UTF-8", str='单位'<html>'] %dummy code
PS: I use a Japanese Windows system, and Chinese character could correctly displayed in text/folder name/excel and so on.
Sorry for my English.
Thanks.

 Réponse acceptée

Hello kei hin,
there is one possibility to display chinese characters by switching the default character set to UTF-8 as described here: https://de.mathworks.com/matlabcentral/answers/116527-how-to-display-chinese-character-in-edit-text-box-in-matlab-gui
or try the following function, that worked on my machine (commented lines are for try in case the code does not work on your machine properly):
function drawTable(Data)
% %%Change default character set
% defCharSet = feature('DefaultCharacterSet', 'UTF8');
% %%Add html tag to Data
% Data(:) = strcat('<html><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />', ...
% Data(:));
%%Plot figure and uitable
f = figure;
t = uitable(f,'ColumnFormat',[],'Data',Data,'ColumnWidth',{50});
% %%Restore default char set
% feature('DefaultCharacterSet', defCharSet);
end
Kind regards,
Robert

7 commentaires

Thanks a lot. I tried your code without commented lines. It didn't work. I think commented lines will change my Matlab setting, so I won't try it.
By the way, how can I know what is my default character set? I can't find anything about 'feature()' or 'DefaultCharacterSet' in my matlab help(F1).
Thank you so much.
Robert U
Robert U le 4 Sep 2017
Modifié(e) : Robert U le 4 Sep 2017
Calling
feature('DefaultCharacterSet')
shows your default character set.
The feature()-function is undocumented. You can find a similar question with answer by Walter Roberson using the "Search Answers"-Feature on this website (see web-link in my answer).
Kind regards,
Robert
PS: The standard character set on my machine is 'windows-1252'. Yours might be different.
kei hin
kei hin le 5 Sep 2017
Modifié(e) : kei hin le 5 Sep 2017
I tried
feature('DefaultCharacterSet')
then I got
ans =
Shift_JIS
so In your first answer
%%Change default character set
defCharSet = feature('DefaultCharacterSet', 'UTF8');
I guess that will change my default character set to 'UTF8'. But what will the 'defCharSet' get? If 'defCharSet' get 'UTF8', your code
%%Restore default char set
feature('DefaultCharacterSet', defCharSet);
I think it is not OK when you restore default char set by 'defCharSet' you got before.
So, should I have to save my default character set to a tmp? Like this
tmp = feature('DefaultCharacterSet'); % get default character set to 'tmp', it will be 'Shift_JIS'
newCharSet = feature('DefaultCharacterSet', 'UTF8'); % change to 'UTF8'
% do something
feature('DefaultCharacterSet', tmp); % use 'tmp' to restore default char set to 'Shift_JIS'
Am I right?
Hello kei hin,
the function call
%%Change default character set
defCharSet = feature('DefaultCharacterSet', 'UTF8');
sets your actual character set to UTF-8 and returns the previously set character set, saving it in the variable "defCharSet".
The function head can be read from Matlab path "YourMatlabRootFolder"\toolbox\distcomp\@distcomp\feature.m as
function oldValue = feature( name, optValue )
;%#ok<NOSEM> undocumented
in version R2014b.
Thus, restoring the previously set character set can be done by calling
feature('DefaultCharacterSet', defCharSet);
No return variable is needed, since you know the character set you are changing back from.
Kind regards,
Robert
kei hin
kei hin le 5 Sep 2017
Modifié(e) : kei hin le 5 Sep 2017
Hello Robert, thank you so much. I tried to change and restore character set, it is OK. But even though I use 'UTF8' or 'GB2312', '单位' is also can't displayed correctly. I tried your first answer with commented lines too. My version is R2011b. and feature() is a P-file. Any idea?
Are you using the above solution as script-code or as function (as presented above)?
First, as script it did not work at any time. Calling the function surprisingly did work.
Check whether your variable is stored correctly:
% write 单 into a variable
TestVar = char('单');
dec2hex(double(TestVar))
Check in workspace whether TestVar contains the correct character or a replacement character. If there is a replacement character try the next 'DefaultCharacterSet'.
% compare hexadecimal representation of '单' in actual encoding
dec2hex(double('单'))
char(hex2dec('5355'))
Kind regards,
Robert
A variable assigned inside the function is not stored correctly but by the replacement character '3F'. Strangely, throwing the function input directly to uitable does not cause any problem.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by