|
|
|
@ -24,7 +24,16 @@ class Oauth::CreateOrFindWechatAccountService < ApplicationService
|
|
|
|
|
new_user = true
|
|
|
|
|
# 新用户
|
|
|
|
|
login = User.generate_login('w')
|
|
|
|
|
@user = User.new(login: login, nickname: result['nickname'].force_encoding('UTF-8'), type: 'User', status: User::STATUS_ACTIVE)
|
|
|
|
|
cd = CharDet.detect(result['nickname'])
|
|
|
|
|
Rails.logger.info "encoding: #{cd['encoding']} confidence: #{cd['confidence']}"
|
|
|
|
|
# 字符编码问题,GB18030编码识别率不行
|
|
|
|
|
decode_content =
|
|
|
|
|
if cd["encoding"] == 'GB18030' && cd['confidence'] > 0.8
|
|
|
|
|
result['nickname'].encode('UTF-8', 'GBK', {:invalid => :replace, :undef => :replace, :replace => ' '})
|
|
|
|
|
else
|
|
|
|
|
result['nickname'].force_encoding('UTF-8')
|
|
|
|
|
end
|
|
|
|
|
@user = User.new(login: login, nickname: decode_content, type: 'User', status: User::STATUS_ACTIVE)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
ActiveRecord::Base.transaction do
|
|
|
|
|