mysql存储过程中的字符串值错误

时间:2017-05-24 17:27:24

标签: c# mysql stored-procedures

Incorrect string value: '\xE8' for column 'P10' at row 1

我正在为EMS RFID通信制作存储过程并将数据包返回到c#应用程序。但它显示P10角色上的图像错误。怎么了??第一个版本是c#代码。我正在尝试迁移到mysql存储过程。

请提出任何建议。

(我已经检查过characterset是utf8)

CREATE DEFINER=`root`@`localhost` FUNCTION `GetRFIDWriteCommand`(`Param1` VARCHAR(50))
    RETURNS text CHARSET utf8
    LANGUAGE SQL
    DETERMINISTIC
    CONTAINS SQL
    SQL SECURITY DEFINER
    COMMENT
BEGIN
    DECLARE P0,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10 CHAR;
    DECLARE TIMEOUT INT;
    DECLARE RET TEXT;

    SET TIMEOUT = 1000;
    SET P0 = char(2); # &H2     STX 
    SET P1 = char(2); #  &H2 
    SET P2 = char(0); #  &H0   
    SET P3 = char(LENGTH(Param1) + 7);
    SET P4 = char(6); #  &HD         #write command
    SET P5 = char(0);
    SET P6 = char(0); #  brStart_Add
    SET P7 = char(0);
    SET P8 = char(LENGTH(Param1)); #  brLength        #length (=100)
    SET P9 = char(3);
    SET P10 = char(232); # <=== ERROR POINT

    SET RET = CONCAT(P0,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,char(3));

    return RET;

END

1 个答案:

答案 0 :(得分:0)

我找到了解决方案!!

char(0x00FC using ucs2)

就像这样使用

char(使用ucs2的HexValue)

https://stackoverflow.com/a/2384387/1038996