Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
xyqb-user2
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
head_group
xyqb-user2
Commits
bdee8762
Commit
bdee8762
authored
Mar 01, 2018
by
技术部-任文超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
解决UTF-8编码4字节的Emoji字符无法存储于Mysql的bug,问题出现范围:地址、昵称(已自测)
parent
7cd63c09
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
61 additions
and
8 deletions
+61
-8
InnerController.java
...tgroup/xyqb/controller/external/user/InnerController.java
+5
-1
WeChatController.java
...group/xyqb/controller/external/user/WeChatController.java
+9
-2
UserCenterController.java
...controller/external/user/center/UserCenterController.java
+9
-0
EmojiUtil.java
src/main/java/cn/quantgroup/xyqb/util/EmojiUtil.java
+38
-5
No files found.
src/main/java/cn/quantgroup/xyqb/controller/external/user/InnerController.java
View file @
bdee8762
...
@@ -478,12 +478,16 @@ public class InnerController implements IBaseController {
...
@@ -478,12 +478,16 @@ public class InnerController implements IBaseController {
}
}
addressObj
.
setUserId
(
userId
);
addressObj
.
setUserId
(
userId
);
addressObj
.
setProvinceCode
(
provinceCode
);
addressObj
.
setProvinceCode
(
provinceCode
);
addressObj
.
setProvince
(
province
);
addressObj
.
setCityCode
(
cityCode
);
addressObj
.
setCityCode
(
cityCode
);
addressObj
.
setCity
(
city
);
addressObj
.
setCity
(
city
);
addressObj
.
setDistrictCode
(
districtCode
);
addressObj
.
setDistrictCode
(
districtCode
);
addressObj
.
setDistrict
(
district
);
addressObj
.
setDistrict
(
district
);
addressObj
.
setAddress
(
address
);
addressObj
.
setAddress
(
address
);
addressObj
.
setProvince
(
province
);
if
(
StringUtils
.
isNotBlank
(
address
))
{
// 替换所有,UTF-8编码时4字节的Emoji表情字符
addressObj
.
setAddress
(
EmojiUtil
.
filterUnicode4
(
address
));
}
addressObj
=
addressService
.
save
(
addressObj
);
addressObj
=
addressService
.
save
(
addressObj
);
LOGGER
.
info
(
"保存后地址详情:{}"
,
addressObj
);
LOGGER
.
info
(
"保存后地址详情:{}"
,
addressObj
);
return
JsonResult
.
buildSuccessResult
(
null
,
AddressRet
.
address2AddressRet
(
addressObj
));
return
JsonResult
.
buildSuccessResult
(
null
,
AddressRet
.
address2AddressRet
(
addressObj
));
...
...
src/main/java/cn/quantgroup/xyqb/controller/external/user/WeChatController.java
View file @
bdee8762
...
@@ -238,10 +238,17 @@ public class WeChatController implements IBaseController {
...
@@ -238,10 +238,17 @@ public class WeChatController implements IBaseController {
if
(
userInfoInDb
==
null
)
{
if
(
userInfoInDb
==
null
)
{
// 微信用户首次登录界面, 首先保存userInfo, 跳入到微信注册登录界面
// 微信用户首次登录界面, 首先保存userInfo, 跳入到微信注册登录界面
if
(
StringUtils
.
isNotBlank
(
userInfo
.
getNickName
()))
{
if
(
StringUtils
.
isNotBlank
(
userInfo
.
getNickName
()))
{
String
nickName
=
EmojiUtil
.
filter
(
userInfo
.
getNickName
());
// 替换所有,UTF-8编码时4字节的Emoji表情字符
String
nickName
=
EmojiUtil
.
filterUnicode4
(
userInfo
.
getNickName
());
userInfo
.
setNickName
(
nickName
);
userInfo
.
setNickName
(
nickName
);
}
}
userInfo
=
wechatService
.
saveWechatUserInfo
(
userInfo
);
try
{
userInfo
=
wechatService
.
saveWechatUserInfo
(
userInfo
);
}
catch
(
Exception
e
){
LOGGER
.
warn
(
"微信用户首次登陆,保存userInfo异常,执行操作:Nick置为*并重新保存."
,
e
);
userInfo
.
setNickName
(
EmojiUtil
.
BYTE_4_REPLACE_TEMPLATE
);
userInfo
=
wechatService
.
saveWechatUserInfo
(
userInfo
);
}
redirectWechatLoginUrlWithoutLogin
(
response
,
merchant
,
userInfo
,
registerFrom
,
domain
);
redirectWechatLoginUrlWithoutLogin
(
response
,
merchant
,
userInfo
,
registerFrom
,
domain
);
return
;
return
;
}
}
...
...
src/main/java/cn/quantgroup/xyqb/controller/external/user/center/UserCenterController.java
View file @
bdee8762
...
@@ -6,6 +6,7 @@ import cn.quantgroup.xyqb.entity.*;
...
@@ -6,6 +6,7 @@ import cn.quantgroup.xyqb.entity.*;
import
cn.quantgroup.user.enums.*
;
import
cn.quantgroup.user.enums.*
;
import
cn.quantgroup.xyqb.model.JsonResult
;
import
cn.quantgroup.xyqb.model.JsonResult
;
import
cn.quantgroup.xyqb.service.user.*
;
import
cn.quantgroup.xyqb.service.user.*
;
import
cn.quantgroup.xyqb.util.EmojiUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.TypeReference
;
import
com.alibaba.fastjson.TypeReference
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.collections.CollectionUtils
;
...
@@ -142,6 +143,10 @@ public class UserCenterController {
...
@@ -142,6 +143,10 @@ public class UserCenterController {
if
(
null
==
userId
||
userId
==
0L
)
{
if
(
null
==
userId
||
userId
==
0L
)
{
return
JsonResult
.
buildErrorStateResult
(
"该用户不存在"
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"该用户不存在"
,
null
);
}
}
if
(
StringUtils
.
isNotBlank
(
nick
))
{
// 替换所有,UTF-8编码时4字节的Emoji表情字符
nick
=
EmojiUtil
.
filterUnicode4
(
nick
);
}
UserAttached
userAttached
=
userCenterService
.
searchUserAttachedByUserId
(
userId
);
UserAttached
userAttached
=
userCenterService
.
searchUserAttachedByUserId
(
userId
);
if
(
null
==
userAttached
)
{
if
(
null
==
userAttached
)
{
userAttached
=
createUserAttached
(
userId
,
""
,
nick
);
userAttached
=
createUserAttached
(
userId
,
""
,
nick
);
...
@@ -290,6 +295,10 @@ public class UserCenterController {
...
@@ -290,6 +295,10 @@ public class UserCenterController {
addressInfo
.
setDistrictCode
(
districtCode
);
addressInfo
.
setDistrictCode
(
districtCode
);
addressInfo
.
setDistrict
(
district
);
addressInfo
.
setDistrict
(
district
);
addressInfo
.
setAddress
(
address
);
addressInfo
.
setAddress
(
address
);
if
(
StringUtils
.
isNotBlank
(
address
))
{
// 替换所有,UTF-8编码时4字节的Emoji表情字符
addressInfo
.
setAddress
(
EmojiUtil
.
filterUnicode4
(
address
));
}
//更新时间
//更新时间
addressInfo
.
setUpdateAt
(
new
Timestamp
(
System
.
currentTimeMillis
()));
addressInfo
.
setUpdateAt
(
new
Timestamp
(
System
.
currentTimeMillis
()));
addressService
.
save
(
addressInfo
);
addressService
.
save
(
addressInfo
);
...
...
src/main/java/cn/quantgroup/xyqb/util/EmojiUtil.java
View file @
bdee8762
package
cn
.
quantgroup
.
xyqb
.
util
;
package
cn
.
quantgroup
.
xyqb
.
util
;
import
java.util.regex.Pattern
;
import
java.util.regex.Pattern
;
/**
/**
* Created by 11 on 2017/2/9.
* 过滤emoji表情
* 过滤emoji表情
* @author renwc
* @date 2018-02-26
*/
*/
public
class
EmojiUtil
{
public
class
EmojiUtil
{
public
static
final
String
BYTE_4_REPLACE_TEMPLATE
=
"*"
;
/**
* Emoji表情
* 1-3字节
* [©-㊙]
*/
private
static
final
Pattern
EMOJI_USC_123
=
Pattern
.
compile
(
"[©-㊙]|\ufe0f"
);
/**
* Emoji表情
* 4字节
* [🀄-🧦]
*/
private
static
final
Pattern
EMOJI_USC_4
=
Pattern
.
compile
(
"[\uD83C\uDC04-\uD83E\uDDE6]"
);
/**
* Emoji表情
* 1-4字节
* [©-㊙]|[🀄-🧦]
*/
private
static
final
Pattern
EMOJI_USC_1234
=
Pattern
.
compile
(
"[\uD83C\uDC04-\uD83E\uDDE6]|[©-㊙]|\ufe0f"
);
private
static
final
Pattern
EMOJI
=
Pattern
.
compile
(
"[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]"
);
/**
* 替换所有Emoji表情字符
* @param text
* @return
*/
public
static
String
filterUnicode1234
(
String
text
)
{
return
text
==
null
||
text
.
trim
().
isEmpty
()
?
text
:
EMOJI_USC_1234
.
matcher
(
text
).
replaceAll
(
""
);
}
public
static
String
filter
(
String
str
)
{
/**
return
str
==
null
||
str
.
trim
().
isEmpty
()
?
str
:
EMOJI
.
matcher
(
str
).
replaceAll
(
""
);
* 替换所有Emoji表情字符
* 条件:UTF-8编码时4字节的
* @param text
* @return
*/
public
static
String
filterUnicode4
(
String
text
)
{
return
text
==
null
||
text
.
trim
().
isEmpty
()
?
text
:
EMOJI_USC_4
.
matcher
(
text
).
replaceAll
(
BYTE_4_REPLACE_TEMPLATE
);
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment