현재 XE 코어는 1.8.45로 최신 버전이고 스케치북 스킨을 사용하고 있습니다.

write_form.html에 title에 해당하는 부분을

htmlspecialchars($oDocument->getTitleText(), ENT_COMPAT, 'UTF-8', false) 와 같이 수정하였습니다.

이렇게 적용하면 사이트 내부에서는 엔티티 문자를 특수문자로 인코딩하여 정상적으로 보여지게 하는 것으로

알고 있습니다.

 

10.PNG

페이스북에서 링크 공유하게 되면 제목이랑 내용이 엔티티 문자 그대로 출력되는데 이걸 정상적으로

특수문자가 보여지게 하려면 어떻게 하면 될까요?

 

html 엔티티 문자로 저장하지 않고 그대로 저장할 수 있는 방법은 없는 건가요?

예를 들어서 데이터베이스 상에서도 & 가 아닌 &로 그대로 저장될 수 있도록요.

  • profile
    이상없이 잘 공유 되는거 같은데요. 말씀 하신 증상이 언제 나타나는지 저도 궁금해 지네요~
  • profile profile

    공유는 잘 됩니다.
    다만 제목에서 html 엔티티 문자가 그대로 출력되는 부분에 대해서 말씀드린 겁니다....

  • profile profile
    그걸 말씀드린건데요. 여기 xe타운 이나 운영하시는 사이트 스케치북 공유기능으로 해봤는데 별 이상한점이 없어서요.
  • profile profile

    share.png

     

    이렇게 공유되면 문제 없지 않나요?

  • profile profile

    facebook.png

     

    위와 같은 경우 말씀 하신것 처럼 노출이 되네요. 띄어쓰기 차이일지..  본문에는 괜찮네요. 그런데 답변이 아니라 죄송하지만 이 것을 위해 html로 저장하지 않으면 오히려 더 광범위하게 다른 곳에서 문제가 생기지는 않을까요??

     

    좋은 답변이 아니라 죄송하네요.

  • profile profile
    저도 그래서 골치가 아픕니다....
    현재 XE타운은 정상적으로 특수문자가 출력이 되는데 제가 운영하고 있는 사이트에서는
    저렇게 특수문자가 엔티티 문자로 나오니까요 ㅠㅠ
    엔티티 문자가 그대로 데이터베이스에 저장되는 거 같아서 애초에 특수문자 그대로 저장되면 링크
    공유에서도 문제가 없을 것 같다는 생각이 들어서 여쭤보는 궁금증이네요 ㅎㅎ
  • profile

    도움을 드릴 수는 없지만 추천은 하고 갈게요. (좀 더 많은 사람이 보도록?)

    아는 사람이 봐도 답변을 받을지 모르지만..ㅜㅜ

  • profile profile
    해결했어요 :)
  • profile
    해결했습니다.
    SEO 모듈이 XE의 내장 함수인 getBrowserTitle 함수를 이용하는데 해당 함수는 htmlspecialchars
    함수를 사용하여 $document_title 변수의 내용을 한번 더 엔티티 문자로 인코딩합니다.
    예를 들어서 < 라는 엔티티 문자에서 &(엠퍼샌드)를 & 라는 엔티티 문자로 인코딩하여 <
    와 같은 형태로 만들어버리는 겁니다.
    XE 상에서는 두 번 인코딩하지 않으므로 정상적으로 보여지지만 페이스북의 경우 SEO 모듈의 Open Graph를 사용하는 코드 부분에서 저렇게 변경된 문자열이 넘겨주게 됩니다.
    페이스북에서는 엔티티 문자 &를 자동으로 변경하여 <로 만들어주면서 출력이 비정상적이었던
    겁니다.
    htmlspecialchars_decode 함수를 이용해서 인코딩된 &를 다시 &(엠퍼샌드)로 디코딩하고 <로 만들어주면 정상적으로 출력되게 됩니다.
    별거 아닌 부분이었는데 한시간동안이나 헤맸네요....
  • profile profile

    축하합니다 >_<