engine_web-ifc icon indicating copy to clipboard operation
engine_web-ifc copied to clipboard

[Bug]: The GetLine() API method has an error in parsing Chinese, which may be caused by Unicode encoding.

Open sennhvi opened this issue 1 year ago • 1 comments

What happened?

I tried to parse this line: #15236= IFCPROPERTYSINGLEVALUE('soil_layer_name',$,IFCIDENTIFIER('\X2\7d20586b571f\X0\'),$); using web-ifc api method like this const props = await this.ifcapi.GetLine(this.modelId as number, id), and I get incorrect text. After I change '\X2\7d20586b571f\X0\' to uppercase '\X2\7D20586B571F\X0\' and then I get correct text, so I think there is something wrong in text parsing part.

Version

0.0.56

What browsers are you seeing the problem on?

Microsoft Edge

Relevant log output

No response

Anything else?

No response

sennhvi avatar Jul 18 '24 10:07 sennhvi

@beachtom I investigated the bug and found that the lowercase letters included in \X2\ and \X0\ in the IFC file not in the correct character range, and the bug that could be fixed was in parsing/string_parsing.cpp, add new line if (value >= 'a' && value <= 'f') return value - 'a' + 10; in function char getNextHex()

After add this line, right decoded: image

Before add this line, error decoded : image

this comment may help somehow.

sennhvi avatar Aug 17 '24 06:08 sennhvi