How to use RFA C++ to handle Chinese characters in the DSPLY_NMLL field of 0981.HK

I have implemented RFA MarketDataSubscriber interface to subscribe data from 0981.HK RIC. I expect to receive Chinese character in the DSPLY_NMLL field, but the TibMsg::PrintTib() method prints the following output.
DSPLY_NMLL : STRING 20 : [^[$*5^[}à ãÃÃÃÃë㡾仡¿]
Best Answer
-
The data type of the DSPLY_NMLL field is RMTES_STRING whose data is encoded with the
Reuters Multilingual Text Encoding Standard (RMTES). RMTES uses ISO 2022 escape
sequences to select the character sets used.The
TibMsg API provided in the RFA package provides conversion functionality to
convert RMTES encoded strings received through Market Feed connections to
Unicode string. The functions are TibMsg::ConvertToUTF8() which converts
MarketFeed string data to UTF8 string data and TibMsg::ConvertToUCS2() which
converts MarketFeed string data to UCS2 string data. For more information,
please see the “12.3.13. TibMsg::ConvertToUCS2, TibMsg::ConvertToUTF8” section
in the TibMsg API programming guide document (tmsgapi.pdf) provided in the RFA C++
package.For other APIs, please see the information in this question.
Please
see the following codes for the example code.err = tMsg.Get("DSPLY_NMLL", fldTmp);
if (!err.code)
{
char str_data[512];
if (fldTmp.Type() == TIBMSG_STRING && fldTmp.HintType() ==
TIBMSG_NODATA)
{
printf("%s: \n", fldTmp.Name());
strncpy(str_data, (char*)fldTmp.Data(), fldTmp.Size());
str_data[fldTmp.Size()] = '\0';
printf("String data : %s\n", str_data);
Tib_i32 conv_len = 0;
// UTF8 - 1 char can be 3 chars
char *UTF8_data = new char[(fldTmp.Size() * 3) + 1];
TibErr err = TibMsg::ConvertToUTF8((char*)fldTmp.Data(), fldTmp.Size(), UTF8_data,(fldTmp.Size() * 3) + 1, conv_len);
// UCS2 - 1 char can be 2 chars
unsigned short* ucs2_data = new unsigned short[(fldTmp.Size() * 2) + 1];
err = TibMsg::ConvertToUCS2((char*)fldTmp.Data(), fldTmp.Size(), ucs2_data,(fldTmp.Size() * 2) + 1, conv_len);
delete[] UTF8_data;
delete[] ucs2_data;
printf("\n"); }
}0
Answers
-
Would it be possible to share again the TibMsg API programming guide document (tmsgapi.pdf)? Due to we could not open the link.
Thank you.
0 -
Hi,
The document is only available in RFA C++ 7.6.x package (except 7.6.2.E3 which doesn't contain the document). You can download RFA C++ package in this page.
0
Categories
- All Categories
- 3 Polls
- 6 AHS
- 36 Alpha
- 166 App Studio
- 6 Block Chain
- 4 Bot Platform
- 18 Connected Risk APIs
- 47 Data Fusion
- 34 Data Model Discovery
- 685 Datastream
- 1.4K DSS
- 616 Eikon COM
- 5.2K Eikon Data APIs
- 10 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- 3 Trading API
- 2.9K Elektron
- 1.4K EMA
- 252 ETA
- 556 WebSocket API
- 38 FX Venues
- 14 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 23 Messenger Bot
- 3 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 60 Open Calais
- 275 Open PermID
- 44 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 22 RDMS
- 1.9K Refinitiv Data Platform
- 652 Refinitiv Data Platform Libraries
- 4 LSEG Due Diligence
- LSEG Due Diligence Portal API
- 4 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.2K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 12 World-Check Customer Risk Screener
- 1K World-Check One
- 46 World-Check One Zero Footprint
- 45 Side by Side Integration API
- 2 Test Space
- 3 Thomson One Smart
- 10 TR Knowledge Graph
- 151 Transactions
- 143 REDI API
- 1.8K TREP APIs
- 4 CAT
- 27 DACS Station
- 121 Open DACS
- 1.1K RFA
- 104 UPA
- 193 TREP Infrastructure
- 228 TRKD
- 917 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 90 Workspace SDK
- 11 Element Framework
- 5 Grid
- 18 World-Check Data File
- 1 Yield Book Analytics
- 46 中文论坛