PHP의 WeChat 사용자 정보 인터페이스 닉네임에 있는 이모티콘 표현을 mysql에 저장하는 방법은 무엇입니까?
天蓬老师
天蓬老师 2017-05-16 13:06:54
0
3
958

제목과 같이 현재 획득한 문자열이 유니코드 인코딩으로 변환되어 테이블에 저장되는 것으로 확인되었습니다. 현재 직면한 문제는 다음과 같습니다. 여러 번 이스케이프한 후 저장하는 데 사용됩니다. 데이터베이스의 문자열에는 여러 겹의 큰따옴표가 있습니다. 한 번만 이스케이프하여 데이터베이스에 저장하면 따옴표가 없더라도 아래와 같이 기호가 누락됩니다. 이어서 키코드를 입력하시면 올바른 보관방법을 상담하실 수 있습니다.

데이터베이스 문자 집합을 utf8mb4로 변경해야 한다는 답변을 봤습니다. 이 문자 집합 대신 utf-8을 사용할 수 없는지 알고 싶습니다. 초보자는 my.ini의 전역 문자 집합을 수정하는 방법만 알고 이 필드를 수정하는 방법은 모릅니다.

최신 업데이트: 테스트 후 utf8mb4가 데이터베이스에 데이터를 저장할 수 있지만 여전히 문제가 있습니다. WeChat 닉네임 앞뒤에 표현식이 있고 중간에 텍스트가 있으면 첫 번째 표현식만 저장할 수 있습니다. 몇번의 우여곡절 끝에도 여전히 utf8을 사용하여 아래 그림의 파란색 막대에서 선택한 문자열을 de로 저장했습니다. -사용자의 닉네임이 훼손되지 않도록 프런트 엔드에서 처리합니다. 더 좋은 방법이 있으면 메시지를 남겨주세요.

< /p>

키 코드:

함수 weixininfo($code){
    $userinfo = getJson($get_user_info_url);
  $wxif = new wxinfo($userinfo["openid"],$userinfo["닉네임"],$userinfo["sex"],$userinfo["headimgurl"]);
  클래스 Emp {};
  $obj = 새로운 Emp();
  $obj->결과 = 0;
  $obj->info = $wxif;
  $obj를 반환합니다.
}

$code = $_GET['코드'];
$data = weixininfo($code);
$info = $data->정보;
$openid = $info->openid;
$nickname = $정보->닉네임;
$name = json_encode($닉네임);
$sex = $정보->섹스;
$headurl = $info->headurl;
$sqls = "mytest(openid,nickname,sex,headurl) VALUES('$openid',$name,'$sex','$headurl')에 삽입";
if($conn->query($sqls) === true){
    세션_시작();
    $_SESSION["openid"]=$openid;
    $conn->close();
    // $uri="./index.php";
    // 헤더( "위치: $uri" );
}또 다른{
    echo "실패:".$sqls."<br>".$conn->error;
};
함수 getJson($url){
    $ch = 컬_초기화();
    컬_setopt($ch, CURLOPT_URL, $url);
    컬_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    컬_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    컬_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $output = 컬_exec($ch);
    컬_닫기($ch);
    return json_decode($output, true);
}
클래스 wxinfo {
  공개 $openid;
  공개 $닉네임;
  공개 $섹스;
  공개 $headurl;

  공개 함수 __construct($openid,$nickname,$sex,$headurl){
    $this->openid = $openid;
    $this->닉네임 = $닉네임;
    $this->sex = $sex;
    $this->headurl = $headurl;
  }
}
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

모든 응답(3)
仅有的幸福
  1. mysql 필드가 utf8mb4-utf8mb4-general_ci

  2. 로 설정됨
  3. php

으아악
phpcn_u1582

테이블이 utf8mb4를 지원하는 경우 utf8mb4로 변경하세요. 유용하지 않으면 utf32를 사용하세요. 소수의 이모티콘 표현만 지원됩니다

쿼리하기 전에 $conn->query("set names utf8")를 실행하여 데이터 전송 프로세스가 왜곡되지 않았는지 확인하세요

emoji도 문자이므로 json으로 변환할 필요가 없습니다

我想大声告诉你

utf-8은 저장 공간으로 3바이트를 사용하고 이모티콘 문자는 4바이트를 사용하므로 utf-8을 utf8mb4로 변환하면 문제가 해결됩니다

참고: mysql 버전은 v5.5.3 이상이어야 합니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿