찾다

 >  Q&A  >  본문

PHP의 WeChat 사용자 정보 인터페이스 닉네임에 있는 이모티콘 표현을 mysql에 저장하는 방법은 무엇입니까?

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

데이터베이스 문자 집합을 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;
  }
}
天蓬老师天蓬老师2869일 전998

모든 응답(3)나는 대답할 것이다

  • 仅有的幸福

    仅有的幸福2017-05-16 13:08:54

    1. mysql 필드가 utf8mb4-utf8mb4-general_ci

    2. 로 설정됨
    3. php

    으아악

    회신하다
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 13:08:54

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

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

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

    회신하다
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-16 13:08:54

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

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

    회신하다
    0
  • 취소회신하다