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.

 Accepted Answer

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 Comments

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.
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.
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
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.

Sign in to comment.

More Answers (0)

Asked:

on 29 Aug 2017

Commented:

on 7 Sep 2017

Community Treasure Hunt

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

Start Hunting!