我发现这个问题——看来matlab计算utf - 8字节数据元素大小延续而不是数组尺寸大小(这是有意义的,即使没有明确指出任何地方)。
更进一步的十六进制转储的测试。垫,分解:
(维数组子元素)
05年00 00 00 (miINT32)
08年00 00 00(8个字节)
01 00 00 00(1行)
10 0 00 00 00(列)
(数组名称的子元素)
01 00 1 00 78 00 00 00 (miINT8 1字节,“x”)
(数据元素)
10 00 00 00 (miUTF8)
0 00 00 00(10个字节)
74 C2 B0 74 74 65 73 65 73 74 00 00 00 00 00 00(测试°测试)
通过改变维数组的列数子元素从0到09年的数量(在“测试°测试”)完成utf - 8字符文件加载正确。大概是旧版本的matlab无视这种差异,在R2020b增加了检查。