Heim Datenbank MySQL-Tutorial Servlet+JSP+MySQL5.6模式下开发web应用出现的中文乱码处理

Servlet+JSP+MySQL5.6模式下开发web应用出现的中文乱码处理

Jun 07, 2016 pm 03:39 PM
web 开发 模式

为了规范 我们使用UTF-8编码为例 我用的web开发软件是 MyEclipse8.5 MySQL5.6 tomcat7 1.弄明白一个web应用从数据库到jsp页面可能经历了哪几层编码的转化 大致是以下的流程 浏览器解释jsp文件所用的编码 - jsp,java文件等等本身的编码 - request接受数据 传

为了规范 我们使用UTF-8编码为例 我用的web开发软件是 MyEclipse8.5  MySQL5.6  tomcat7


1.弄明白一个web应用从数据库到jsp页面可能经历了哪几层编码的转化 大致是以下的流程


 浏览器解释jsp文件所用的编码      jsp,java文件等等本身的编码    request接受数据 传递数据时所用的编码 或者是form表单提交数据所用的编码   Tomcat服务器接受数据时用的编码 Tomcat服务器传递数据给Servlet所用的编码 在servlet中使用sql语句的编码(一般与java文件本身的的编码一致) 数据库中存储数据使用的编码


 2.现在说说怎么去设置每个流程的编码


①.浏览器解释jsp文件所用的编码  

在servlet文件中 doGet()方法的第一句应该为这条语句"response.setContentType("text/html;charset=utf-8");" doPost()方法应该为 this.doGet() 

在jsp文件中的第一句 加上“ ”  


②.jsp.java文件等等本身的编码

 jsp文件中添加这句

同时为了保险  在MyEclipse中做一些设置 

首先对你的web工程名右键选择properties -> Resource -> 选择Text file encoding为UTF-8

然后Window -> Preferences -> MyEclipse -> Files and Editors 把所有的与你的web工程有关的文件比如jsp css xml 的编码全部设置为 ISO 10640/Unicode(UTF-8)

③.request接受数据 传递数据所用的编码 (这个说实话我并没有指定也解决了中文乱码)  但为了保险 我还是把方法写在这里

所有的servlet 文件里面的doGet方法的第一句为request.setCharacterEncoding("UTF-8"); 与前面说的稍有冲突 但基本无影响 doPost()方法应该为 this.doGet()

所有的jsp文件也是一样 在用到request之前就指定编码

至于form表单提交时的编码问题 我并没有指定

④.Tomcat服务器接收数据时所用的编码

这个很简单 在Tomcat目录下的server.xml文件里面 找到

                       connectionTimeout="20000"
               redirectPort="8443" />  改为

               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8" /> 

⑤.sql语句的编码与数据库存储数据时指定的编码

网上大多数人都说 为了编码一致 必须在mysql数据库中所有的地方都要使用一样的编码 如UTF-8  于是就要这样做  mysql> set names 'UTF-8'; 还有的人说 在my.ini里面 设置默认编码为UTF-8 当然这个是以前的MySQL版本了 MySQL5.6是没有my.ini这个文件的  至少我没找到

诚然 以上的办法也许能够解决问题 但不幸的是 在我这里确实无法解决

但根据我自己的理解来说 

这里存在一个问题 当你右键控制台窗口 选择默认值的时候 默认代码页是没有UTF-8的 只有 437 OEM 美国 和 GBK 这里无法保证编码的统一性 

如果使用set names 这样的sql语句指定编码一致的话  会出问题 

然后 那又该如何解决? 首先确保你的默认代码页是GBK  

使用sql语句 mysql>show variables like 'character_set_%'; 查看mysql字符集

    确保结果是这样

mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | gbk                       |
| character_set_connection | gbk                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | gbk                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+


如果不是 请使用sql语句 形如 mysql> set character_set_client=gbk; 这样来逐个修改编码


经过以上的修改 请重启tomcat服务器 mysql数据库 


我的数据库 jsp页面的乱码就这样实实在在的解决了 无论是jsp页面插入中文数据到数据库 还是从数据库中提取数据到jsp页面的显示 都没问题了


很是希望以上的办法能够帮助到与我一样陷入乱码痛苦的码农们 在下才疏学浅 如果你觉得有帮助 那是我的荣幸  如果你觉得没帮助 也请别喷 


如果说以上的一些说法有问题 恳请广大网友指正 小弟感激不尽!








Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Vier empfohlene KI-gestützte Programmiertools Vier empfohlene KI-gestützte Programmiertools Apr 22, 2024 pm 05:34 PM

Dieses KI-gestützte Programmiertool hat in dieser Phase der schnellen KI-Entwicklung eine große Anzahl nützlicher KI-gestützter Programmiertools zu Tage gefördert. KI-gestützte Programmiertools können die Entwicklungseffizienz verbessern, die Codequalität verbessern und Fehlerraten reduzieren. Sie sind wichtige Helfer im modernen Softwareentwicklungsprozess. Heute wird Dayao Ihnen 4 KI-gestützte Programmiertools vorstellen (und alle unterstützen die C#-Sprache). https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot ist ein KI-Codierungsassistent, der Ihnen hilft, Code schneller und mit weniger Aufwand zu schreiben, sodass Sie sich mehr auf Problemlösung und Zusammenarbeit konzentrieren können. Git

„Bitte nicht stören'-Modus funktioniert auf dem iPhone nicht: Behebung „Bitte nicht stören'-Modus funktioniert auf dem iPhone nicht: Behebung Apr 24, 2024 pm 04:50 PM

Selbst das Beantworten von Anrufen im Modus „Bitte nicht stören“ kann ein sehr lästiges Erlebnis sein. Wie der Name schon sagt, deaktiviert der Modus „Bitte nicht stören“ alle Benachrichtigungen über eingehende Anrufe und Warnungen von E-Mails, Nachrichten usw. Sie können diesen Lösungssätzen folgen, um das Problem zu beheben. Fix 1 – Fokusmodus aktivieren Aktivieren Sie den Fokusmodus auf Ihrem Telefon. Schritt 1 – Wischen Sie von oben nach unten, um auf das Kontrollzentrum zuzugreifen. Schritt 2 – Aktivieren Sie als Nächstes den „Fokusmodus“ auf Ihrem Telefon. Der Fokusmodus aktiviert den „Bitte nicht stören“-Modus auf Ihrem Telefon. Es werden keine Benachrichtigungen über eingehende Anrufe auf Ihrem Telefon angezeigt. Fix 2 – Fokusmodus-Einstellungen ändern Wenn es Probleme mit den Fokusmoduseinstellungen gibt, sollten Sie diese beheben. Schritt 1 – Öffnen Sie Ihr iPhone-Einstellungsfenster. Schritt 2 – Als nächstes schalten Sie die Fokusmodus-Einstellungen ein

Welcher KI-Programmierer ist der beste? Entdecken Sie das Potenzial von Devin, Tongyi Lingma und SWE-Agent Welcher KI-Programmierer ist der beste? Entdecken Sie das Potenzial von Devin, Tongyi Lingma und SWE-Agent Apr 07, 2024 am 09:10 AM

Am 3. März 2022, weniger als einen Monat nach der Geburt von Devin, dem weltweit ersten KI-Programmierer, entwickelte das NLP-Team der Princeton University einen Open-Source-KI-Programmierer-SWE-Agenten. Es nutzt das GPT-4-Modell, um Probleme in GitHub-Repositorys automatisch zu lösen. Die Leistung des SWE-Agenten auf dem SWE-Bench-Testsatz ist ähnlich wie die von Devin, er benötigt durchschnittlich 93 Sekunden und löst 12,29 % der Probleme. Durch die Interaktion mit einem dedizierten Terminal kann der SWE-Agent Dateiinhalte öffnen und durchsuchen, die automatische Syntaxprüfung verwenden, bestimmte Zeilen bearbeiten sowie Tests schreiben und ausführen. (Hinweis: Der obige Inhalt stellt eine geringfügige Anpassung des Originalinhalts dar, die Schlüsselinformationen im Originaltext bleiben jedoch erhalten und überschreiten nicht die angegebene Wortbeschränkung.) SWE-A

Erfahren Sie, wie Sie mobile Anwendungen mit der Go-Sprache entwickeln Erfahren Sie, wie Sie mobile Anwendungen mit der Go-Sprache entwickeln Mar 28, 2024 pm 10:00 PM

Tutorial zur Entwicklung mobiler Anwendungen in der Go-Sprache Da der Markt für mobile Anwendungen weiterhin boomt, beginnen immer mehr Entwickler damit, sich mit der Verwendung der Go-Sprache für die Entwicklung mobiler Anwendungen zu befassen. Als einfache und effiziente Programmiersprache hat die Go-Sprache auch großes Potenzial für die Entwicklung mobiler Anwendungen gezeigt. In diesem Artikel wird detailliert beschrieben, wie die Go-Sprache zum Entwickeln mobiler Anwendungen verwendet wird, und es werden spezifische Codebeispiele angehängt, um den Lesern den schnellen Einstieg und die Entwicklung eigener mobiler Anwendungen zu erleichtern. 1. Vorbereitung Bevor wir beginnen, müssen wir die Entwicklungsumgebung und die Tools vorbereiten. Kopf

Welche Linux-Distribution eignet sich am besten für die Android-Entwicklung? Welche Linux-Distribution eignet sich am besten für die Android-Entwicklung? Mar 14, 2024 pm 12:30 PM

Die Android-Entwicklung ist eine arbeitsreiche und spannende Aufgabe, und die Auswahl einer geeigneten Linux-Distribution für die Entwicklung ist besonders wichtig. Welche der vielen Linux-Distributionen eignet sich am besten für die Android-Entwicklung? In diesem Artikel wird dieses Problem unter verschiedenen Aspekten untersucht und spezifische Codebeispiele aufgeführt. Werfen wir zunächst einen Blick auf einige derzeit beliebte Linux-Distributionen: Ubuntu, Fedora, Debian, CentOS usw. Sie alle haben ihre eigenen Vorteile und Eigenschaften.

So aktivieren Sie den administrativen Zugriff über die Cockpit-Web-Benutzeroberfläche So aktivieren Sie den administrativen Zugriff über die Cockpit-Web-Benutzeroberfläche Mar 20, 2024 pm 06:56 PM

Cockpit ist eine webbasierte grafische Oberfläche für Linux-Server. Es soll vor allem neuen/erfahrenen Benutzern die Verwaltung von Linux-Servern erleichtern. In diesem Artikel besprechen wir die Cockpit-Zugriffsmodi und wie Sie den Administratorzugriff von CockpitWebUI auf das Cockpit umstellen. Inhaltsthemen: Cockpit-Eingabemodi Ermitteln des aktuellen Cockpit-Zugriffsmodus Aktivieren des Verwaltungszugriffs für das Cockpit über CockpitWebUI Deaktivieren des Verwaltungszugriffs für das Cockpit über CockpitWebUI Fazit Cockpit-Eingabemodi Das Cockpit verfügt über zwei Zugriffsmodi: Eingeschränkter Zugriff: Dies ist die Standardeinstellung für den Cockpit-Zugriffsmodus. In diesem Zugriffsmodus können Sie vom Cockpit aus nicht auf den Webbenutzer zugreifen

Erkundung der Front-End-Technologie der Go-Sprache: eine neue Vision für die Front-End-Entwicklung Erkundung der Front-End-Technologie der Go-Sprache: eine neue Vision für die Front-End-Entwicklung Mar 28, 2024 pm 01:06 PM

Als schnelle und effiziente Programmiersprache erfreut sich Go im Bereich der Backend-Entwicklung großer Beliebtheit. Allerdings assoziieren nur wenige Menschen die Go-Sprache mit der Front-End-Entwicklung. Tatsächlich kann die Verwendung der Go-Sprache für die Front-End-Entwicklung nicht nur die Effizienz verbessern, sondern Entwicklern auch neue Horizonte eröffnen. In diesem Artikel wird die Möglichkeit der Verwendung der Go-Sprache für die Front-End-Entwicklung untersucht und spezifische Codebeispiele bereitgestellt, um den Lesern ein besseres Verständnis dieses Bereichs zu erleichtern. In der traditionellen Frontend-Entwicklung werden häufig JavaScript, HTML und CSS zum Erstellen von Benutzeroberflächen verwendet

VSCode verstehen: Wofür wird dieses Tool verwendet? VSCode verstehen: Wofür wird dieses Tool verwendet? Mar 25, 2024 pm 03:06 PM

„VSCode verstehen: Wofür wird dieses Tool verwendet?“ „Als Programmierer, egal ob Sie Anfänger oder erfahrener Entwickler sind, können Sie auf den Einsatz von Codebearbeitungstools nicht verzichten.“ Unter vielen Bearbeitungstools ist Visual Studio Code (kurz VSCode) bei Entwicklern als Open-Source-, leichter und leistungsstarker Code-Editor sehr beliebt. Wofür genau wird VSCode verwendet? Dieser Artikel befasst sich mit den Funktionen und Verwendungsmöglichkeiten von VSCode und stellt spezifische Codebeispiele bereit, um den Lesern zu helfen

See all articles