在MATLAB和Octave中,double(<character>)会给出不同的结果。

9

MATLAB (documentation):

>> double('α')    
ans =    
   945

Octave 4.0.0,Ubuntu 16.04(文档):
>> double('α')
ans =    
   206   177

为什么我的结果不同?

注意:'α'是希腊语小写字母alpha。

1个回答

13
这是因为MATLAB的默认编码是'US-ASCII'(根据Locale settings可能会有所不同),而在Octave中,它是'UTF-8'。
为了确认,以下是来自MATLAB的结果:
>> unicode2native('α', 'UTF-8')

ans =

  1×2 uint8 row vector

   206   177

您可以使用featureslCharacterEncoding()来检查编码:

feature('DefaultCharacterSet')

或者

slCharacterEncoding() 

根据Mathworks的说法,您可以使用以下方法更改编码
slCharacterEncoding(encoding)

我在更改编码并尝试获得相同结果方面运气不佳。这可能是一个错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接