ID:2598966
 
BYOND Version:513
Operating System:Linux
Web Browser:Firefox 78.0
Applies to:DM Language
Status: Open

Issue hasn't been assigned a status value.
Descriptive Problem Summary:

It seems like in 513 Byond still works with DB through latin1 charset.

Because of this data saved in DD is not real UTF-8, and Byond can't parse any real UTF-8 from DB (looks like ????).

Numbered Steps to Reproduce Problem:

* Setup MySQL/MariaDB database with charset=utf8mb4 collate=utf8mb4_unicode_ci
* Byond 513 with Dantom.DB for example
* Make from game insert request to DB with some UTF-8 Cyrillic text
* Check table in DB: text not readable
* Byond still can work with it, any requested data will be converted again in UTF-8 in game
* But if you request from game data with real UTF-8, Byond replace all text with ????

Also sorry I'm so late on this "Test 513" train...
Update! I was told that there is seems to be a workaround with "SET NAMES" at the start of the connection. But I don't have time to test it yet.
If that doesn't work for you we have a third party dll/so connector we use with ss13

https://github.com/tgstation/rust-g

This has a bunch of features, but mainly it has an async http and mariadb clients.

You could look at things like
https://github.com/tgstation/tgstation/blob/master/code/ controllers/subsystem/dbcore.dm

to get an idea of how we use it on the BYOND side via polling call()