Hi all,
I have a web app which allows user to choose the language of the UI, basically English and Chinese. A table stored in MySql has 2 columns named EDescription (English) and CDescription (Chinese) will be displayed in a WebListBox, depending on the user’s choice of language.
English displays the correct content, but Chinese displays a little bit strange,
“, > 1000’(G)” displayed as “> > 10’0’(G)”
https://drive.google.com/open?id=0B2DNp_dIdcJXMmNiYm91R3FVSWM
Here is the code:
Select Case session.DefaultLanguage
Case app.kLanguageEnglish
DataList.Cell(RowNo, 2) = rs.Field("EDescription").StringValue
Case app.kLanguageChinese
DataList.Cell(RowNo, 2) = rs.Field("CDescription").StringValue
End Select
Thanks for input.
Strange… suddenly it cures by itself…
This could be an encoding problem. Taking data straight out of a database without setting the encoding to something known can get you all sorts of problems.
The easiest way I’ve found to do this is to write a method like this in a Module somewhere:
[code]Function UTF8(extends aString as String) as String
If aString.Encoding = Encodings.UTF8 then
Return aString
ElseIf aString.Encoding = Nil then
Return DefineEncoding(aString, encodings.UTF8)
Else
Return ConvertEncoding(aString, Encodings.UTF8)
End If
End Function[/code]
Then after you call StringValue, just append .UTF8.
Thanks Greg, I think most of my problems due to Chinese can be solved by your solution. Just curious the string is generated by my web app (not user typed nor copied from other web sites) and stored in a UTF8-coded database, and the data is displayed in the same web app, isn’t that they should be in the same code-set?
There’s an easy way to tell. Assign the value to a string, set a breakpoint right there and check the encoding in the debugger.
If the encoding of the string is nil, the app has no way to know what to do with the text.