{"id":250,"date":"2014-07-23T06:46:54","date_gmt":"2014-07-23T15:46:54","guid":{"rendered":"http:\/\/blog.box.kr\/?p=250"},"modified":"2014-07-23T06:46:54","modified_gmt":"2014-07-23T15:46:54","slug":"%ea%b0%9c%eb%b0%9cvc-urlencode-urldecode-%ec%9c%a0%eb%8b%88%ec%bd%94%eb%93%9c-%eb%b3%80%ed%99%98-%ec%86%8c%ec%8a%a4","status":"publish","type":"post","link":"https:\/\/blog.box.kr\/?p=250","title":{"rendered":"[\uac1c\ubc1c\/VC++] URLEncode, URLDecode, \uc720\ub2c8\ucf54\ub4dc \ubcc0\ud658 \uc18c\uc2a4"},"content":{"rendered":"<div style=\"color: #333333;\">\n<div class=\"article_info\" style=\"color: #8b8b8b;\">\n<div class=\"article_info_content\">\n<h2 class=\"article_title\" style=\"color: #0b0c5e;\"><a style=\"color: #0b0c5e;\" href=\"http:\/\/sbrich.tistory.com\/834\">[\uac1c\ubc1c\/VC++] URLEncode, URLDecode, \uc720\ub2c8\ucf54\ub4dc \ubcc0\ud658 \uc18c\uc2a4<\/a><\/h2>\n<p><a style=\"color: #333333;\" href=\"http:\/\/sbrich.tistory.com\/category\/IT\/%EA%B0%9C%EB%B0%9C\">IT\/\uac1c\ubc1c<\/a>\u00a02011\/02\/10 12:08\n<\/div>\n<\/div>\n<\/div>\n<div class=\"article_post\" style=\"color: #333333;\">\n[\uac1c\ubc1c\/VC++] URLEncode, URLDecode, UTF8 \ubcc0\ud658 \uc18c\uc2a4<br \/>\n[\uc720\ub2c8\ucf54\ub4dc \ubb38\uc790\uc9d1\ud569\uc6a9]<br \/>\nCString Unicode_URLDecode( CString strEncodedText )<br \/>\n{<br \/>\nCString strResult;<br \/>\nwchar_t ch0, ch1, ch2;<br \/>\nwchar_t wch;<br \/>\nTCHAR tch;<br \/>\nint i = 0;<br \/>\nwhile( i&lt;strEncodedText.GetLength() )<br \/>\n{<br \/>\ntch = strEncodedText.GetAt(i);<\/p>\n<p>if( tch != _T(&#8216;%&#8217;) )<br \/>\n{<br \/>\n\/\/ a character not encoded<br \/>\nstrResult += tch;<br \/>\ni++;<br \/>\n}<br \/>\nelse<br \/>\n{<br \/>\n\/\/ a character encoded !!<br \/>\nch0 = _tcstol( strEncodedText.Mid( i+1, 2 ), NULL, 16 );<br \/>\ni += 3;<br \/>\nif( ch0 &lt; 0x80 )<br \/>\n\/\/ 1 byte for UTF-8<br \/>\n\/\/ 0xxx xxxx<br \/>\nwch = ch0;<br \/>\nelse<br \/>\n{<br \/>\nif( strEncodedText.GetAt(i)!= _T(&#8216;%&#8217;) )\u00a0\/\/ Error!<br \/>\ncontinue;<br \/>\nch1 = _tcstol( strEncodedText.Mid( i+1, 2 ), NULL, 16 );<br \/>\ni += 3;<br \/>\nif( ch0 &lt; 0xe0 )<br \/>\n{<br \/>\n\/\/ 2 byte for UTF-8<br \/>\n\/\/ 110x xxxx 10xx xxxx<br \/>\nwch = ((ch0&amp;0x1f)&lt;&lt;6)<br \/>\n| (ch1&amp;0x3f);<br \/>\n}<br \/>\nelse<br \/>\n{<br \/>\n\/\/ 3 byte for UTF-8<br \/>\nif( strEncodedText.GetAt(i)!= _T(&#8216;%&#8217;) )\u00a0\/\/ Error!<br \/>\ncontinue;<br \/>\nch2 = _tcstol( strEncodedText.Mid( i+1, 2 ), NULL, 16 );<br \/>\ni += 3;<br \/>\n<span id=\"callbacknestsbrichtistorycom8344559\"><\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ 1110 xxxx 10xx xxxx 10xx xxxx<br \/>\nwch = ((ch0&amp;0x0f)&lt;&lt;12)<br \/>\n| ((ch1&amp;0x3f)&lt;&lt;6)<br \/>\n| (ch2&amp;0x3f);<br \/>\n}<br \/>\n}<br \/>\nstrResult += wch;<br \/>\n}<br \/>\n}<br \/>\nreturn strResult;<br \/>\n}<\/p>\n<p>&nbsp;<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\n[\uba40\ud2f0\ubc14\uc774\ud2b8 \ubb38\uc790\uc9d1\ud569\uc6a9]<br \/>\ninline BYTE CURLEncode::toHex(const BYTE &amp;x) {<br \/>\nreturn x &gt; 9 ? x + 55: x + 48;<br \/>\n}<br \/>\ninline BYTE CURLEncode::toByte(const BYTE &amp;x) {<br \/>\nreturn x &gt; 57? x &#8211; 55: x &#8211; 48;<br \/>\n}<\/p>\n<p>CString CURLEncode::URLDecode(CString sIn)<br \/>\n{<br \/>\nCString sOut;<br \/>\nconst int nLen = sIn.GetLength() + 1;<br \/>\nregister LPBYTE pOutTmp = NULL;<br \/>\nLPBYTE pOutBuf = NULL;<br \/>\nregister LPBYTE pInTmp = NULL;<br \/>\nLPBYTE pInBuf =(LPBYTE)sIn.GetBuffer(nLen);<br \/>\n\/\/alloc out buffer<br \/>\npOutBuf = (LPBYTE)sOut.GetBuffer(nLen);<\/p>\n<p>if(pOutBuf)<br \/>\n{<br \/>\npInTmp\u00a0\u00a0 = pInBuf;<br \/>\npOutTmp = pOutBuf;<br \/>\n\/\/ do encoding<br \/>\nwhile (*pInTmp)<br \/>\n{<br \/>\nif(&#8216;%&#8217;==*pInTmp)<br \/>\n{<br \/>\npInTmp++;<br \/>\n*pOutTmp++ = (toByte(*pInTmp)%16&lt;&lt;4) + toByte(*(pInTmp+1))%16;<br \/>\npInTmp++;<br \/>\n}<br \/>\nelse if(&#8216;+&#8217;==*pInTmp)<br \/>\n*pOutTmp++ = &#8216; &#8216;;<br \/>\nelse<br \/>\n*pOutTmp++ = *pInTmp;<br \/>\npInTmp++;<br \/>\n}<br \/>\n*pOutTmp = &#8216;\u0000&#8217;;<br \/>\nsOut.ReleaseBuffer();<br \/>\n}<br \/>\nsIn.ReleaseBuffer();<\/p>\n<p>return sOut;<br \/>\n}<br \/>\nCString CURLEncode::URLEncode(CString sIn)<br \/>\n{<br \/>\nCString sOut;<br \/>\nconst int nLen = sIn.GetLength() + 1;<br \/>\nregister LPBYTE pOutTmp = NULL;<br \/>\nLPBYTE pOutBuf = NULL;<br \/>\nregister LPBYTE pInTmp = NULL;<br \/>\nLPBYTE pInBuf =(LPBYTE)sIn.GetBuffer(nLen);<br \/>\n\/\/alloc out buffer<br \/>\npOutBuf = (LPBYTE)sOut.GetBuffer(nLen*3);<\/p>\n<p>if(pOutBuf)<br \/>\n{<br \/>\npInTmp\u00a0\u00a0 = pInBuf;<br \/>\npOutTmp = pOutBuf;<br \/>\n\/\/ do encoding<br \/>\nwhile (*pInTmp)<br \/>\n{<br \/>\nif(isalnum(*pInTmp) || &#8216;-&#8216;==*pInTmp || &#8216;_&#8217;==*pInTmp || &#8216;.&#8217;==*pInTmp)<br \/>\n*pOutTmp++ = *pInTmp;<br \/>\nelse if(isspace(*pInTmp))<br \/>\n*pOutTmp++ = &#8216;+&#8217;;<br \/>\nelse<br \/>\n{<br \/>\n*pOutTmp++ = &#8216;%&#8217;;<br \/>\n*pOutTmp++ = toHex(*pInTmp&gt;&gt;4);<br \/>\n*pOutTmp++ = toHex(*pInTmp%16);<br \/>\n}<br \/>\npInTmp++;<br \/>\n}<br \/>\n*pOutTmp = &#8216;\u0000&#8217;;<br \/>\nsOut.ReleaseBuffer();<br \/>\n}<br \/>\nsIn.ReleaseBuffer();<\/p>\n<p>return sOut;<br \/>\n}<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>[\uac1c\ubc1c\/VC++] URLEncode, URLDecode, \uc720\ub2c8\ucf54\ub4dc \ubcc0\ud658 \uc18c\uc2a4 IT\/\uac1c\ubc1c\u00a02011\/02\/10 12:08 [\uac1c\ubc1c\/VC++] URLEncode, URLDecode, UTF8 \ubcc0\ud658 \uc18c\uc2a4 [\uc720\ub2c8\ucf54\ub4dc \ubb38\uc790\uc9d1\ud569\uc6a9] CString Unicode_URLDecode( CString strEncodedText ) { CString strResult; wchar_t ch0, ch1, ch2; wchar_t wch; TCHAR tch; int i = 0; while( i&lt;strEncodedText.GetLength() ) { tch = strEncodedText.GetAt(i); if( tch != _T(&#8216;%&#8217;) ) { \/\/ a character not encoded strResult += tch; i++; } else { \/\/ a character encoded !! ch0 = _tcstol( strEncodedText.Mid( i+1, 2 ), NULL, 16 ); i += 3; if( ch0 &lt; 0x80 ) \/\/ 1 byte for UTF-8 \/\/ 0xxx xxxx wch = ch0; else { if( strEncodedText.GetAt(i)!= _T(&#8216;%&#8217;) )\u00a0\/\/ Error! continue; ch1 = _tcstol( strEncodedText.Mid( i+1, 2 ), NULL, 16 ); i += 3; if( ch0 &lt; 0xe0 ) { \/\/ 2 byte for UTF-8 \/\/ 110x xxxx 10xx xxxx wch = ((ch0&amp;0x1f)&lt;&lt;6) | (ch1&amp;0x3f); } else { \/\/ 3 byte for UTF-8 if( strEncodedText.GetAt(i)!= _T(&#8216;%&#8217;) )\u00a0\/\/ Error! continue; ch2 = _tcstol( strEncodedText.Mid( i+1, 2 ), NULL, 16 ); i += 3; \u00a0\u00a0\u00a0\u00a0\u00a0\/\/ 1110 xxxx 10xx xxxx 10xx xxxx wch = ((ch0&amp;0x0f)&lt;&lt;12) | ((ch1&amp;0x3f)&lt;&lt;6) | (ch2&amp;0x3f); } } strResult += wch; } } return strResult; } &nbsp; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- [\uba40\ud2f0\ubc14\uc774\ud2b8 \ubb38\uc790\uc9d1\ud569\uc6a9] inline BYTE CURLEncode::toHex(const BYTE &amp;x) { return x [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"ngg_post_thumbnail":0,"spay_email":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true},"categories":[9,7],"tags":[],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5q9Zn-42","jetpack-related-posts":[{"id":252,"url":"https:\/\/blog.box.kr\/?p=252","url_meta":{"origin":250,"position":0},"title":"[\uac1c\ubc1c\/VC++] URLEncode, URLDecode, UTF8 \ubcc0\ud658 \uc18c\uc2a4","date":"2014-07-23","format":false,"excerpt":"[\uac1c\ubc1c\/VC++] URLEncode, URLDecode, UTF8 \ubcc0\ud658 \uc18c\uc2a4 IT\/\uac1c\ubc1c\u00a02011\/02\/10 12:05 [\uac1c\ubc1c\/VC++] URLEncode, URLDecode, UTF8 \ubcc0\ud658 \uc18c\uc2a4 \uc544\ub798 \uc18c\uc2a4\ub294 \uba40\ud2f0\ubc14\uc774\ud2b8 \ubb38\uc790\uc9d1\ud569 \ud504\ub85c\uc81d\ud2b8 \uc124\uc815\uc73c\ub85c \uc791\uc5c5\ud574\uc57c \uc791\ub3d9\ub41c\ub2e4. inline BYTE toHex(const BYTE &x) { return x > 9 ? x + 55: x + 48; } CString URLEncode(CString sIn) { CString sOut; const int nLen =\u2026","rel":"","context":"In &quot;C\/C++&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":441,"url":"https:\/\/blog.box.kr\/?p=441","url_meta":{"origin":250,"position":1},"title":"CStirng \u2194 char * (Unicode \u2194 ANSI)","date":"2014-12-15","format":false,"excerpt":"\u203b\u00a0Format \uc9c0\uc815 \uac00\ub2a5 (CString \u2192 char *) \/\/\u00a0Static CString strText = _T(\"casting test\"); char szText[128]; sprintf_s(szText, 128, \"%S\", strText); \/\/ Using\u00a0szText... \/\/ Dynamic CString strText = _T(\"casting test\"); const size_t size = strText.GetLength(); char *pszText = new char[size]; sprintf_s(pszText,\u00a0size, \"%S\", strText); \/\/ Using\u00a0pszText... \/\/ \ub625 \uce58\uc6b0\ub294 \uac70 \uc78a\uc9c0\ub9d0\uc790 delete\u00a0pszText; \u203b\u2026","rel":"","context":"In &quot;C\/C++&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":319,"url":"https:\/\/blog.box.kr\/?p=319","url_meta":{"origin":250,"position":2},"title":"[MFC] &#8211; FTP \uc811\uc18d \ubc0f \ud30c\uc77c \ub2e4\uc6b4","date":"2014-08-09","format":false,"excerpt":"void CTestFTP::FTP_DOWN(CString filename) { \u00a0CInternetSession session; \u00a0CFtpConnection *pConnection = NULL; try { \/\/\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0IP\uc8fc\uc18c\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ID\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Password \u00a0\u00a0pConnection = session.GetFtpConnection(\u00a0 _T(\"111.222.33.4\"), _T(\"abcd\"), _T(\"12345\")); \u00a0\u00a0\/\/ \uc5f0\uacb0\uc774 \uc548\ub410\uc744 \uacbd\uc6b0 if (!pConnection) { AfxMessageBox(_T(\"Error\")); \u00a0\u00a0\u00a0pConnection = NULL; return; } pConnection->SetCurrentDirectory(_T(\"\/s\")); \u00a0\u00a0CString str; \u00a0\u00a0pConnection->GetCurrentDirectory(str);\/\/ FTP \uc11c\ubc84\uc758 \ud3f4\ub354 \uacbd\ub85c \uc5bb\uae30 \u00a0\u00a0CString RemoteStr; CString LocalStr; RemoteStr.Format( _T(\"%s\/%s\"),m_ProgramPath,filename\/*_T(\"abcd.exe\")*\/); \/\/\u2026","rel":"","context":"In &quot;C\/C++&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":597,"url":"https:\/\/blog.box.kr\/?p=597","url_meta":{"origin":250,"position":3},"title":"[\ud38c][AngularJS] \ubc30\uc6b0\ub294 \ubc29\ubc95 &amp; \uae30\ubcf8 \uac1c\ub150 \uc7a1\uae30","date":"2015-02-02","format":false,"excerpt":"http:\/\/mobicon.tistory.com\/281 AngularJS\/Concept AngularJS\ub97c \ubc30\uc6b0\uae30 \uc704\ud574\u00a0\uc88c\ucda9\uc6b0\ub3cc \ud558\uba70 \uc77d\uace0, \ubcf4\uace0,\u00a0\ub4e3\uace0, \ucf54\ub529\ud574\ubcf8 \ucf54\uc2a4\ub97c \ub098\ub984 \uc815\ub9ac\ud574 \ubcf4\uc558\ub2e4. 1.\u00a0\uac1c\ub150\uc7a1\uae30 -\u00a0Angular's father\uc778\u00a0\ubbf8\uc2a4\ucf54\ub2d8\uc758\u00a0AngularJS \uc18c\uac1c \ub3d9\uc601\uc0c1\uc744 \ubcf8\ub2e4 : \ub2e8\uacc4\ubcc4\ub85c jQuery\uc640 \uc798 \ube44\uad50\ud558\uace0 \uc788\ub2e4 \u00a0 - Art of AngularJS\ub97c \ubcf4\uace0\uc11c \uc774\uc81c \ubc30\uc6cc\uc57c\ud560 \ud544\uc694\uc131\uc744 \ub290\uaef4\ubcf4\uc138\uc694. \uc774\uc81c \uc2dc\uc791\ud558\uc138\uc694. \u00a0 \u00a0\u00a0The Art of AngularJS from Matt Raible - AngularJS\uc758 \uc911\uc694 \uc694\uc18c\uc640 \uae30\ubcf8\uae30\ub97c\u2026","rel":"","context":"In &quot;JAVA&quot;","img":{"alt_text":"","src":"http:\/\/cfile29.uf.tistory.com\/image\/2161163B517694CB2CA7B5","width":350,"height":200},"classes":[]},{"id":305,"url":"https:\/\/blog.box.kr\/?p=305","url_meta":{"origin":250,"position":4},"title":"[MFC] \ub0b4\ubd80 \ucc3d\ub07c\ub9ac \uba54\uc2dc\uc9c0 \uc1a1\uc218\uc2e0","date":"2014-08-07","format":false,"excerpt":"\ud074\ub798\uc2a4\uac04 \ub370\uc774\ud130 \uc804\ub2ec\uc744 \ud558\ub294 \ubc29\ubc95\uc774 \ubb34\uc5c7\uc774 \uc788\uc744\uae4c. 1. \uc804\uc5ed\ubcc0\uc218 2. \ud5e4\ub354 include \ud6c4 \ubcc0\uc218 \uc811\uadfc 3. SendMessage SendMessage\ub97c \uc774\uc6a9\ud558\uba74 \ud074\ub798\uc2a4\uac04 \ub370\uc774\ud130 \uc804\ub2ec\uc774 \uc6a9\uc774\ud568\uc744 \uc54c\uace0, \uc0ac\uc6a9\ud574\ubcf4\uc558\ub2e4(\uba87\ubc88\uc758 \uc0bd\uc9c8\uacfc \ud568\uaed8...) ? 1 2 3 4 5 6 7 8 9 10 11 12 LRESULT SendMessage( \u00a0\u00a0\u00a0\u00a0UINT message, \u00a0\u00a0\u00a0\u00a0WPARAM wParam = 0, \u00a0\u00a0\u00a0\u00a0LPARAM lParam\u2026","rel":"","context":"In &quot;C\/C++&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":182,"url":"https:\/\/blog.box.kr\/?p=182","url_meta":{"origin":250,"position":5},"title":"[Grid] BCG Grid Ctl \uc774\ubca4\ud2b8 \ubaa8\uc74c","date":"2014-07-09","format":false,"excerpt":"\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ const DWORD dwViewStyle =\u00a0WS_CHILD | WS_VISIBLE; CRect rcTmp; CBCGPGridRow* pRow; CString strTmp; m_staticFileAntPatternHoriListLoc.GetClientRect(&rcTmp); m_staticFileAntPatternHoriListLoc.MapWindowPoints(this, &rcTmp); m_listFileAntPatternHoriList = NULL; m_listFileAntPatternHoriList = new CCellTypesGridCtrl(); if (!m_listFileAntPatternHoriList->Create (dwViewStyle, rcTmp, this, IDC_LIST_FILE_ANT_PATTERN_HORI_LIST)) { TRACE0(\"Failed to create workspace viewn\"); return ;\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ fail to create } m_listFileAntPatternHoriList->SetWholeRowSel (FALSE); m_listFileAntPatternHoriList->EnableMarkSortedColumn (FALSE); m_listFileAntPatternHoriList->EnableHeader (TRUE, BCGP_GRID_HEADER_SELECT); m_listFileAntPatternHoriList->EnableRowHeader\u2026","rel":"","context":"In &quot;C\/C++&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/posts\/250"}],"collection":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=250"}],"version-history":[{"count":0,"href":"https:\/\/blog.box.kr\/index.php?rest_route=\/wp\/v2\/posts\/250\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=250"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=250"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.box.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=250"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}