我使用的是springboot 1.5.2.RELEASE,当我尝试使用import.sql文件添加带有阿拉伯字母的演示数据时,如下所示:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
MyObj = class(TObject)
Value: Cardinal;
end;
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
public
Obj1:MyObj;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Obj1.Free;
Obj1.Value:=Obj1.Value * 5;
Caption:=IntToStr(Obj1.Value);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ReportMemoryLeaksOnShutdown:=true;
Obj1:=MyObj.Create;
Obj1.Value:=10;
end;
end.
将值插入数据库中:INSERT INTO city (active, name_arabic,name_english) VALUES (b'1', 'الرياض','Riyadh');
我尝试将以下内容添加到application.properties中,但没有运气:
الرياض
我正在使用的数据库是spring.datasource.connectionProperties=useUnicode=true;characterEncoding=utf-8;autoReconnect=true;useSSL=false
spring.datasource.sql-script-encoding=UTF-8
,而collcation是MySQL
只有当我在服务器上运行项目时才会出现此问题,如果运行单元测试或使用maven构建应用程序,则问题不会发生。
请告知如何解决此问题。
答案 0 :(得分:1)
使用以下maven插件解决了问题:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>-Dfile.encoding=UTF8</argLine>
</configuration>
</plugin>
上述插件将解决命令行构建的编码问题。
更新以解决在服务器上运行项目时的问题:
1- Run As
2-运行配置
3-将服务器的编码更改为UTF-8,如下图所示
答案 1 :(得分:0)
您必须将?useUnicode=yes&characterEncoding=UTF-8
用于db-url。
您在XML中遇到的错误很可能是因为使用了&#39;&amp;&#39;这不是XML中允许的实体。您应该对连接进行编码,因此工作连接URL应该类似于
<property name="url" value="jdbc:mysql://localhost:3306/DB_Name?useUnicode=true&characterEncoding=UTF-8"/>
您还可以确保您的服务器配置正确,例如将tomIEncoding添加到连接器
<connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
将指定用于解码URI的字符编码。您应该找到服务器的等效项
答案 2 :(得分:0)
变为乱码。请参阅http://stackoverflow.com/questions/38363566/trouble-with-utf8-characters-what-i-see-is-not-what-i-stored,了解导致它的原因以及代码中需要更改的内容。
要进一步验证,请执行e
;该字符串应具有十六进制SELECT HEX(...) FROM ...
相反,如果你得到C398C2A7C399E2809EC398C2B1C399C5A0C398C2A7C398C2B6
,那么你就有#34;双重编码&#34;。