关于字符编码的问题?
中文在gb2312编码的时候是2字节,但在unicode编码的 情况下是1-3字节不等,英文则都是1字节,但在mysql中不做这方面的设定,varchar的长度不管是中文和英文都是一格字算一个,那么。。为什么要做这个1个汉字相当于2个英文字符的设定?
回复内容:
中文在gb2312编码的时候是2字节,但在unicode编码的 情况下是1-3字节不等,英文则都是1字节,但在mysql中不做这方面的设定,varchar的长度不管是中文和英文都是一格字算一个,那么。。为什么要做这个1个汉字相当于2个英文字符的设定?
http://xfhnever.com/blog/2014/12/20/encodingformat/ 中稍微介绍了一下各种编码格式
varchar(20)指定的是字符长度
mysql中会指定表的字符集,如下面的CHARSET=gbk
:
<code> CREATE TABLE `test_type` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`), ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=gbk COLLATE=gbk_bin </code>
为什么要做这个1个汉字相当于2个英文字符的设定?
这种设定是一般基于字符串的自然长度(也就是显示的长度), 一个汉字等于2个英文字母或数字。对于普通用户来讲就是字样,计算字节一般不都是程序和程序员干的事么。所以一般的程序设计中,一般遵循着一个汉字就是2个英文字母长度的设定,而具体占用空间则视编码和环境进行计算。
参建函数 mb_strwidth()
最早出现的编码是ASCII这样面向英文语言的编码,ASCII定义了0-127,一共128个字符的编码。对于英语这样用26个字符的,自然是够用的。问题是,如果是其他使用的字符多余26个的西方文字呢?由于已经约定了0x7F空间内的字符编码,所以我们可以看到有些西方文字,例如俄文是完全不和英文共用部分字符的,需要使用ASCII扩展集。在编码理论发展的过程,出现过各个地域分别采用不同编码体系来编码本国文字。中国是使用ISO2022体系,编码了中国的常用字符GB2312,更多的字符GBK,以及最大的集合GB18030。
通过简单的思考,你会发觉一个字节8bits只能编码类似英文这样的文字系统,而中文的常用字就有几千上万个。所以至少需要2个字节。
Unicode的出现,目的是统一全世界所有的字符编码空间,不会造成字符编码冲突问题。例如,如果你用GBK编码的字符,用UTF-8编码解释,也可能是字面有效的。Unicode编码有UTF-8,UTF-16,UTF-32,甚至UTF-7等多种格式。常说的Unicode编码是指UTF-16,因为它能以统一的方式编码几乎所有常用的字符,所以如果不是针对极端情况,我们可以假设字符都能用UTF-16表示。在UTF-16编码的情况下,汉字和英文每个字符的长度都是2个字节,是等长的。在Windows系统内部就是利用这种特性,高效的处理文字。UTF-8应用也很广泛,好处是存储上来说空间节省,解码复杂些。
MySQL在多个层面上都做了Encoding的设计,支持在不同层面上指定字符编码。
不过显然,我们应该推荐在各个层面是使用UTF-8编码。如果是内存中处理,推荐使用UTF-16,其实各种语言在设计中,好像也是这样设计的。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Eine der wichtigsten Änderungen, die in MySQL 8.4 (der neuesten LTS-Version von 2024) eingeführt wurden, besteht darin, dass das Plugin „MySQL Native Password“ nicht mehr standardmäßig aktiviert ist. Darüber hinaus entfernt MySQL 9.0 dieses Plugin vollständig. Diese Änderung betrifft PHP und andere Apps

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

CMS steht für Content Management System. Es handelt sich um eine Softwareanwendung oder Plattform, die es Benutzern ermöglicht, digitale Inhalte zu erstellen, zu verwalten und zu ändern, ohne dass dafür fortgeschrittene technische Kenntnisse erforderlich sind. CMS ermöglicht Benutzern das einfache Erstellen und Organisieren von Inhalten

Arrays sind lineare Datenstrukturen, die zur Verarbeitung von Daten in der Programmierung verwendet werden. Manchmal, wenn wir Arrays verarbeiten, müssen wir dem vorhandenen Array neue Elemente hinzufügen. In diesem Artikel werden wir verschiedene Möglichkeiten diskutieren, Elemente zum Ende eines Arrays in PHP hinzuzufügen, mit Code -Beispielen, Ausgabe sowie Zeit- und Raumkomplexitätsanalyse für jede Methode. Hier sind die verschiedenen Möglichkeiten, um einem Array Elemente hinzuzufügen: Verwenden Sie quadratische Klammern [] In PHP besteht die Möglichkeit, Elemente zum Ende eines Arrays hinzuzufügen, die Verwendung von Quadratklammern []. Diese Syntax funktioniert nur in Fällen, in denen wir nur ein einzelnes Element hinzufügen möchten. Das Folgende ist die Syntax: $ array [] = Wert; Beispiel
