У меня есть моя база данных с utf8mb4 во всех таблицах и все столбцы char/varchar/text. Все работает нормально, но мне было интересно, действительно ли это нужно для всех столбцов. Я имею в виду, что у меня есть столбцы, которые будут содержать текст пользователя, который требует utf8mb4, поскольку пользователь может вводить любой язык, вставлять смайлики и т. Д. Однако у меня есть разные столбцы, которые будут содержать другие типы строк, такие как токены доступа пользователей, коды стран, псевдонимы пользователей, которые не содержат странных символов, и так далее.MySQL: разные кодировки для различного содержания текста, стоит ли это?
Стоит ли менять кодировку этих столбцов на что-то вроде ascii или latin1? Это улучшит пространство базы данных, эффективность? Я чувствую, что набор charset, такой как utf84mb для чего-то, что никогда не будет содержать символы юникода, является пустой тратой «чего-то» ... но я действительно не знаю, как это управляется внутри MySQL.
С другой стороны, я подключаюсь к этой базе данных с php и устанавливаю кодировку соединений на uft8mb4, поэтому я полагаю, что все столбцы non utf8 будут преобразованы автоматически. Я полагаю, это не проблема, так как utf8 является надмножеством ascii или latin1.
Любые советы? профи и контрас? Благодаря!
Utf8 очень мал, когда кодировка является латинским-1, вы теряете возможность мультибайта получать очень мало. – Anthony
Плюсы очень мало, это только даст вам больше головной боли до кодирования позже, так что не делайте этого –
UTF-8 является надмножеством ASCII, поэтому любой текст в диапазоне x00-x7F является одиночным байтом. Он занимает такое же пространство в ASCII, Latin-1 или UTF-8.Не стоит менять определенные поля (столбцы) с UTF-8 на ASCII или Latin-1, особенно если это уже используется в производстве. Что касается времени обработки, вы можете потратить немного больше на поля UTF-8 (нужно проверить многобайтовые символы), но это не должно быть серьезным хитом. –