(已解決) 字串陣列是不是不能放中文字串?出現含有亂碼字串的編譯錯誤。

  •   392 
  • 最後發表   Sadless  2020 十月 30
Sadless 發文於   2020/10/29

我想要建立一個陣列,存放每支股票的中文名稱。

但是,編譯此函數腳本,就會出現下列的含有亂碼字串的編譯錯誤,我猜測是中文編碼的問題。

Test.array.chinese.string_1-1-1ExitCode: 1
StdOut: 

StdErr: System\XSSystem\Tmp\4fe57359cb604556a3a69adab6248d00.cpp: In member function 'virtual void DJScript::Function::Cdb07860eeb764c20b3f9be7d66e609a8::OnEvalBar()':
System\XSSystem\Tmp\4fe57359cb604556a3a69adab6248d00.cpp:436:34: error: converting to execution character set: Illegal byte sequence
   _stock_name_string_array.Set(0,"摰?",1,327);
                                  ^
System\XSSystem\Tmp\4fe57359cb604556a3a69adab6248d00.cpp:717:34: error: converting to execution character set: Illegal byte sequence
   _stock_name_string_array.Set(0,"撱箇?",1,608);
                                  ^
System\XSSystem\Tmp\4fe57359cb604556a3a69adab6248d00.cpp:1397:34: error: converting to execution character set: Illegal byte sequence
   _stock_name_string_array.Set(0,"摰?",1,1288);
                                  ^
System\XSSystem\Tmp\4fe57359cb604556a3a69adab6248d00.cpp:1486:34: error: converting to execution character set: Illegal byte sequence
   _stock_name_string_array.Set(0,"??",1,1377);
                                  ^
System\XSSystem\Tmp\4fe57359cb604556a3a69adab6248d00.cpp:1614:34: error: converting to execution character set: Illegal byte sequence
   _stock_name_string_array.Set(0,"摰?鞈?",1,1505);
                                  ^
System\XSSystem\Tmp\4fe57359cb604556a3a69adab6248d00.cpp:1657:34: error: converting to execution character set: Illegal byte sequence
   _stock_name_string_array.Set(0,"瘣?",1,1548);
                                  ^
System\XSSystem\Tmp\4fe57359cb604556a3a69adab6248d00.cpp:1680:34: error: converting to execution character set: Illegal byte sequence
   _stock_name_string_array.Set(0,"蝡?",1,1571);
                                  ^
System\XSSystem\Tmp\4fe57359cb604556a3a69adab6248d00.cpp:1712:34: error: converting to execution character set: Illegal byte sequence
   _stock_name_string_array.Set(0,"?€€",1,1603);
                                  ^



 

測試函數腳本如下:Test.array.chinese.string_1

PS. 程式碼過長,原來的腳本如附件。

//函數:測試:Test.array.chinese.string_1

input:stock_name_string(string);

variable: number_of_stocks(1726 +1);    //共有1726支上市/上櫃股票, +1 給 stock_name_string_array[0],空閒不使用

array: stock_name_string_array[]("");   //股票名稱

array_setmaxindex(stock_name_string_array, number_of_stocks);


stock_name_string_array[1] = "台泥";
stock_name_string_array[2] = "亞泥";
stock_name_string_array[3] = "嘉泥";
stock_name_string_array[4] = "環泥";
stock_name_string_array[5] = "幸福";
stock_name_string_array[6] = "信大";
stock_name_string_array[7] = "東泥";
stock_name_string_array[8] = "味全";
stock_name_string_array[9] = "味王";
stock_name_string_array[10] = "大成";
...

 

我將中文名稱換成"test"字串實驗,發現編譯可以成功。

測試函數腳本如下:Test.array.chinese.string_2

PS. 程式碼過長,原來的腳本如附件。

//函數:測試:Test.array.chinese.string_2

input:stock_name_string(string);

variable: number_of_stocks(1726 +1);    //共有1726支上市/上櫃股票, +1 給 stock_name_string_array[0],空閒不使用

array: stock_name_string_array[]("");   //股票名稱

array_setmaxindex(stock_name_string_array, number_of_stocks);


stock_name_string_array[1] = "test";
stock_name_string_array[2] = "test";
stock_name_string_array[3] = "test";
stock_name_string_array[4] = "test";
stock_name_string_array[5] = "test";
stock_name_string_array[6] = "test";
stock_name_string_array[7] = "test";
stock_name_string_array[8] = "test";
stock_name_string_array[9] = "test";
stock_name_string_array[10] = "test";
...

 

請問小幫手,要怎麼解決陣列中存取中文字串的問題呢?

 

附加文件

XQ小幫手 發文於   2020/10/30

Sadless 您好

這個呀~~

好像是這兩個中文字的問題 " 碁、恒"    查了一下好像是big5中文的新字

而我們的系統還沒有支援到這兩個字

請參考一下 下面維基百科的連結

https://zh.wikipedia.org/wiki/%E4%BB%A3%E7%A2%BC%E9%A0%81950

這個暫且可能要請您先避開這些股票 名稱  (用代碼 之類的替代) 

就可以編譯成功了

我們會在研究一下這個要怎麼去做修正  感謝

發表回覆
Close