{"id":13579,"date":"2024-09-30T22:41:21","date_gmt":"2024-09-30T20:41:21","guid":{"rendered":"https:\/\/www.salvis.com\/blog\/?p=13579"},"modified":"2024-10-02T20:23:52","modified_gmt":"2024-10-02T18:23:52","slug":"how-many-bytes-are-in-an-emoji","status":"publish","type":"post","link":"https:\/\/www.salvis.com\/blog\/2024\/09\/30\/how-many-bytes-are-in-an-emoji\/","title":{"rendered":"How Many Bytes Are in an Emoji?"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">What Is a Byte?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A byte is made up of 8 bits. And in the old days, it represented a character. If you use a single-byte character set such as WE8MSWIN1252, WE8ISO8859P15 or similar, it still is.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What Is a Character?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We can find definitions for example on <a href=\"https:\/\/en.wikipedia.org\/wiki\/Character_(computing)\">Wikipedia<\/a> and in the <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/23\/nlspg\/glossary.html#NLSPG-GUID-430C4143-1022-4B46-A9C3-659376083E08\">documentation for the Oracle Database<\/a>. The <a href=\"https:\/\/www.unicode.org\/versions\/Unicode16.0.0\/#Summary\">current Unicode standard<\/a> (version 16) defines 154,998 characters. The <a href=\"https:\/\/www.unicode.org\/Public\/UCD\/latest\/charts\/CodeCharts.pdf\">CodeChart.pdf<\/a> is part of the standard and describes all those characters on 3113 pages.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why Does It Matter?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A character is a part of a string and we store strings in the database. The SQL standard defines a <code><a href=\"https:\/\/islandsql.github.io\/IslandSQL\/sql-2023-2-foundation.html#character_string_type\">&lt;character string type&gt;<\/a><\/code> with an optional <code>&lt;character maximum length&gt;<\/code> in octets (bytes) or characters. In other words, the size of a character string is defined by the number of characters it contains. In the Oracle Database, we also have a hard limit of 4000 or 32767 bytes for data types like <code>char<\/code>, <code>varchar<\/code> or <code>varchar2<\/code>  depending on the <code>max_string_size<\/code> parameter. So we should know exactly what the size of a string data type means.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Querying UTF-8 Characters<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The following query provides details about a bunch of UTF-8 characters. I ran the query in my Oracle Database 23.5 with an AL32UTF8 character set.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(234, 191, 191, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"with\n   data (name, value) as (values\n      ('Latin capital letter A',                       'A'),\n      ('Dollar sign',                                  '$'),\n      ('Copyright sign',                               '\u00a9'),\n      ('Pound sign',                                   '\u00a3'),\n      ('Euro sign',                                    '\u20ac'),\n      ('Double exlamation mark',                       '\u203c'),\n      ('Trademark sign',                               '\u2122'),\n      ('Grinning face',                                '\ud83d\ude00'),\n      ('Double exclamation mark (emoji)',              '\u203c\ufe0f'),\n      ('Trademark sign (emoji)',                       '\u2122\ufe0f'),\n      ('Information',                                  '\u2139\ufe0f'),\n      ('No entry',                                     '\u26d4'),\n      ('Woman',                                        '\ud83d\udc69'),\n      ('Woman with white hair, medium-dark skin tone', '\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddb3'),\n      ('Man',                                          '\ud83d\udc68'),\n      ('Girl',                                         '\ud83d\udc67'),\n      ('Boy',                                          '\ud83d\udc66'),\n      ('Family',                                       '\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66'),\n      ('Kiss: woman, man, medium-light skin tone',     '\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc')\n   )\nselect name,\n       value,\n       length(value)  as len_in_chars,\n       lengthb(value) as len_in_bytes,\n       substr(dump(value, 16), instr(dump(value, 16), ':') + 2) as bytes_as_hex_list\n  from data;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">with<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   <\/span><span style=\"color: #569CD6\">data<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #569CD6\">name<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">value<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #569CD6\">values<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      (<\/span><span style=\"color: #CE9178\">&#39;Latin capital letter A&#39;<\/span><span style=\"color: #D4D4D4\">,                       <\/span><span style=\"color: #CE9178\">&#39;A&#39;<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      (<\/span><span style=\"color: #CE9178\">&#39;Dollar sign&#39;<\/span><span style=\"color: #D4D4D4\">,                                  <\/span><span style=\"color: #CE9178\">&#39;$&#39;<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      (<\/span><span style=\"color: #CE9178\">&#39;Copyright sign&#39;<\/span><span style=\"color: #D4D4D4\">,                               <\/span><span style=\"color: #CE9178\">&#39;\u00a9&#39;<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      (<\/span><span style=\"color: #CE9178\">&#39;Pound sign&#39;<\/span><span style=\"color: #D4D4D4\">,                                   <\/span><span style=\"color: #CE9178\">&#39;\u00a3&#39;<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      (<\/span><span style=\"color: #CE9178\">&#39;Euro sign&#39;<\/span><span style=\"color: #D4D4D4\">,                                    <\/span><span style=\"color: #CE9178\">&#39;\u20ac&#39;<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      (<\/span><span style=\"color: #CE9178\">&#39;Double exlamation mark&#39;<\/span><span style=\"color: #D4D4D4\">,                       <\/span><span style=\"color: #CE9178\">&#39;\u203c&#39;<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      (<\/span><span style=\"color: #CE9178\">&#39;Trademark sign&#39;<\/span><span style=\"color: #D4D4D4\">,                               <\/span><span style=\"color: #CE9178\">&#39;\u2122&#39;<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      (<\/span><span style=\"color: #CE9178\">&#39;Grinning face&#39;<\/span><span style=\"color: #D4D4D4\">,                                <\/span><span style=\"color: #CE9178\">&#39;\ud83d\ude00&#39;<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      (<\/span><span style=\"color: #CE9178\">&#39;Double exclamation mark (emoji)&#39;<\/span><span style=\"color: #D4D4D4\">,              <\/span><span style=\"color: #CE9178\">&#39;\u203c\ufe0f&#39;<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      (<\/span><span style=\"color: #CE9178\">&#39;Trademark sign (emoji)&#39;<\/span><span style=\"color: #D4D4D4\">,                       <\/span><span style=\"color: #CE9178\">&#39;\u2122\ufe0f&#39;<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      (<\/span><span style=\"color: #CE9178\">&#39;Information&#39;<\/span><span style=\"color: #D4D4D4\">,                                  <\/span><span style=\"color: #CE9178\">&#39;\u2139\ufe0f&#39;<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      (<\/span><span style=\"color: #CE9178\">&#39;No entry&#39;<\/span><span style=\"color: #D4D4D4\">,                                     <\/span><span style=\"color: #CE9178\">&#39;\u26d4&#39;<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      (<\/span><span style=\"color: #CE9178\">&#39;Woman&#39;<\/span><span style=\"color: #D4D4D4\">,                                        <\/span><span style=\"color: #CE9178\">&#39;\ud83d\udc69&#39;<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">      (<\/span><span style=\"color: #CE9178\">&#39;Woman with white hair, medium-dark skin tone&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddb3&#39;<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      (<\/span><span style=\"color: #CE9178\">&#39;Man&#39;<\/span><span style=\"color: #D4D4D4\">,                                          <\/span><span style=\"color: #CE9178\">&#39;\ud83d\udc68&#39;<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      (<\/span><span style=\"color: #CE9178\">&#39;Girl&#39;<\/span><span style=\"color: #D4D4D4\">,                                         <\/span><span style=\"color: #CE9178\">&#39;\ud83d\udc67&#39;<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      (<\/span><span style=\"color: #CE9178\">&#39;Boy&#39;<\/span><span style=\"color: #D4D4D4\">,                                          <\/span><span style=\"color: #CE9178\">&#39;\ud83d\udc66&#39;<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      (<\/span><span style=\"color: #CE9178\">&#39;Family&#39;<\/span><span style=\"color: #D4D4D4\">,                                       <\/span><span style=\"color: #CE9178\">&#39;\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66&#39;<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      (<\/span><span style=\"color: #CE9178\">&#39;Kiss: woman, man, medium-light skin tone&#39;<\/span><span style=\"color: #D4D4D4\">,     <\/span><span style=\"color: #CE9178\">&#39;\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc&#39;<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">select<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">name<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       <\/span><span style=\"color: #569CD6\">value<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       <\/span><span style=\"color: #569CD6\">length<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">value<\/span><span style=\"color: #D4D4D4\">)  <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> len_in_chars,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       lengthb(<\/span><span style=\"color: #569CD6\">value<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> len_in_bytes,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       substr(<\/span><span style=\"color: #569CD6\">dump<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">value<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">16<\/span><span style=\"color: #D4D4D4\">), instr(<\/span><span style=\"color: #569CD6\">dump<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #569CD6\">value<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">16<\/span><span style=\"color: #D4D4D4\">), <\/span><span style=\"color: #CE9178\">&#39;:&#39;<\/span><span style=\"color: #D4D4D4\">) + <\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> bytes_as_hex_list<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">data<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-width:calc(1 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(234, 191, 191, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"NAME                                         VALUE LEN_IN_CHARS LEN_IN_BYTES BYTES_AS_HEX_LIST                                                         \n-------------------------------------------- ----- ------------ ------------ --------------------------------------------------------------------------------------------------------\nLatin capital letter A                       A                1            1 41                                                                        \nDollar sign                                  $                1            1 24                                                                        \nCopyright sign                               \u00a9                1            2 c2,a9                                                                     \nPound sign                                   \u00a3                1            2 c2,a3                                                                     \nEuro sign                                    \u20ac                1            3 e2,82,ac                                                                  \nDouble exlamation mark                       \u203c                1            3 e2,80,bc                                                                  \nTrademark sign                               \u2122                1            3 e2,84,a2                                                                  \nGrinning face                                \ud83d\ude00               1            4 f0,9f,98,80                                                               \nDouble exclamation mark (emoji)              \u203c\ufe0f               2            6 e2,80,bc,ef,b8,8f                                                         \nTrademark sign (emoji)                       \u2122\ufe0f               2            6 e2,84,a2,ef,b8,8f                                                         \nInformation                                  \u2139\ufe0f               2            6 e2,84,b9,ef,b8,8f                                                         \nNo entry                                     \u26d4               1            3 e2,9b,94                                                                  \nWoman                                        \ud83d\udc69               1            4 f0,9f,91,a9                                                               \nWoman with white hair, medium-dark skin tone \ud83d\udc69\ud83c\udffe\u200d\ud83e\uddb3               4           15 f0,9f,91,a9,f0,9f,8f,be,e2,80,8d,f0,9f,a6,b3\nMan                                          \ud83d\udc68               1            4 f0,9f,91,a8                                                               \nGirl                                         \ud83d\udc67               1            4 f0,9f,91,a7                                                               \nBoy                                          \ud83d\udc66               1            4 f0,9f,91,a6                                                               \nFamily                                       \ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66               7           25 f0,9f,91,a8,e2,80,8d,f0,9f,91,a9,e2,80,8d,f0,9f,91,a7,e2,80,8d,f0,9f,91,a6\nKiss: woman, man, medium-light skin tone     \ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc              10           35 f0,9f,91,a9,f0,9f,8f,bc,e2,80,8d,e2,9d,a4,ef,b8,8f,e2,80,8d,f0,9f,92,8b,e2,80,8d,f0,9f,91,a8,f0,9f,8f,bc\n\n19 rows selected. \" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">NAME                                         VALUE LEN_IN_CHARS LEN_IN_BYTES BYTES_AS_HEX_LIST                                                         <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">-------------------------------------------- ----- ------------ ------------ --------------------------------------------------------------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Latin capital letter A                       A                1            1 41                                                                        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Dollar sign                                  $                1            1 24                                                                        <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Copyright sign                               \u00a9                1            2 c2,a9                                                                     <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Pound sign                                   \u00a3                1            2 c2,a3                                                                     <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Euro sign                                    \u20ac                1            3 e2,82,ac                                                                  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Double exlamation mark                       \u203c                1            3 e2,80,bc                                                                  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Trademark sign                               \u2122                1            3 e2,84,a2                                                                  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Grinning face                                \ud83d\ude00               1            4 f0,9f,98,80                                                               <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Double exclamation mark (emoji)              \u203c\ufe0f               2            6 e2,80,bc,ef,b8,8f                                                         <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Trademark sign (emoji)                       \u2122\ufe0f               2            6 e2,84,a2,ef,b8,8f                                                         <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Information                                  \u2139\ufe0f               2            6 e2,84,b9,ef,b8,8f                                                         <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">No entry                                     \u26d4               1            3 e2,9b,94                                                                  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Woman                                        \ud83d\udc69               1            4 f0,9f,91,a9                                                               <\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">Woman with white hair, medium-dark skin tone \ud83d\udc69\ud83c\udffe\u200d\ud83e\uddb3               4           15 f0,9f,91,a9,f0,9f,8f,be,e2,80,8d,f0,9f,a6,b3<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Man                                          \ud83d\udc68               1            4 f0,9f,91,a8                                                               <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Girl                                         \ud83d\udc67               1            4 f0,9f,91,a7                                                               <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Boy                                          \ud83d\udc66               1            4 f0,9f,91,a6                                                               <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Family                                       \ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66               7           25 f0,9f,91,a8,e2,80,8d,f0,9f,91,a9,e2,80,8d,f0,9f,91,a7,e2,80,8d,f0,9f,91,a6<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Kiss: woman, man, medium-light skin tone     \ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc              10           35 f0,9f,91,a9,f0,9f,8f,bc,e2,80,8d,e2,9d,a4,ef,b8,8f,e2,80,8d,f0,9f,92,8b,e2,80,8d,f0,9f,91,a8,f0,9f,8f,bc<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">19 rows selected. <\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h5 class=\"wp-block-heading\">Value vs. Character<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>len_in_chars<\/code> column should make it clear that the thing represented in the <code>value<\/code> column is not a character. It&#8217;s a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Grapheme\">grapheme<\/a> &#8211; the smallest functional unit of a writing system. A grapheme can be built by more than one character.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Monospaced Font<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">I&#8217;m using a monospaced font for code in this blog. However, some graphemes are wider than others. The fixed-width font no longer works as expected. This is why the result is not nicely formatted. Using spaces to format a result grid does not work anymore. Most emojis use more than two spaces but less than three spaces.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Same Looking Graphemes<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>\u203c<\/code> (Double exclamation mark) can be represented with 3 bytes or 6 bytes. The additional three bytes are <code>efb88f<\/code>. It&#8217;s a variation selector <code>U+FE0F<\/code>. It marks a &#8220;normal&#8221; character as emoji. As a result, we expect the emoji to look different. However, the representation depends on the font and in this case on the browser. Just because two graphemes look the same does not mean they are identical.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Codepoint to Bytes<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">A UTF-8 character is defined as a code point. <a href=\"https:\/\/en.wikipedia.org\/wiki\/UTF-8#Description\">Wikipedia<\/a> describes quite well how a code point is converted into a byte sequence. I&#8217;ve created a PL\/SQL package to convert a code point to bytes and vice versa. It&#8217;s available as <a href=\"https:\/\/gist.github.com\/PhilippSalvisberg\/520cb8269462f1011c319cbf05b9b12b\">Gist on GitHub.<\/a> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here&#8217;s an example of how to use it:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"select utf8.codepoint_to_bytes('U+FE0F') as to_bytes,\n       utf8.bytes_to_codepoint('EFB88F') as to_codepoint;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">select<\/span><span style=\"color: #D4D4D4\"> utf8.codepoint_to_bytes(<\/span><span style=\"color: #CE9178\">&#39;U+FE0F&#39;<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> to_bytes,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       utf8.bytes_to_codepoint(<\/span><span style=\"color: #CE9178\">&#39;EFB88F&#39;<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> to_codepoint;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"TO_BYTES TO_CODEPOINT\n-------- ------------\nEFB88F   U+FE0F      \" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">TO_BYTES TO_CODEPOINT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">-------- ------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">EFB88F   U+FE0F      <\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h5 class=\"wp-block-heading\">Skin tones and Joined Emojies<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">For various emojis, you can define a skin tone. This increases the size of a grapheme. The \ud83d\udc69\ud83c\udffe\u200d\ud83e\uddb3 (Woman with white hair, medium-dark skin tone) consists of the following 4 characters:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ud83d\udc69 (Woman): <code>U+1F469<\/code>, 4 bytes<\/li>\n\n\n\n<li>\ud83c\udffe (Medium-Dark Skin Tone Modifier): <code>U+1F3FE<\/code>, 4 bytes<\/li>\n\n\n\n<li>Zero Width Joiner: <code>U+200D<\/code>, 3 bytes<\/li>\n\n\n\n<li>\ud83e\uddb3 (White Hair): <code>U+1F9B3<\/code>, 4 bytes<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">Emoji Breakdown via SQL<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">The following query shows the characters of the largest three emojis in my example set.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"with\n   data (seq, emoji, bytes) as (values\n      (1, '\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddb3', json[4, 4, 3, 4]),\n      (2, '\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66', json[4, 3, 4, 3, 4, 3, 4]),\n      (3, '\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc', json[4, 4, 3, 3, 3, 3, 4, 3, 4, 4])\n   )\nselect d.emoji,\n       j.seq as part,\n       substr(d.emoji, j.seq, 1) as e_char,\n       sum(j.bytes) over (partition by d.seq order by j.seq) as e_char_len,\n       substr(dump(substr(d.emoji, j.seq, 1), 16), 14) as e_char_bytes\n  from data d,\n       json_table(\n          d.bytes, '$[*]'\n          columns (\n             seq for ordinality,\n             bytes number path '$'\n          )\n       ) j\n order by d.seq, j.seq;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">with<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   <\/span><span style=\"color: #569CD6\">data<\/span><span style=\"color: #D4D4D4\"> (seq, emoji, bytes) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #569CD6\">values<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      (<\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddb3&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">json<\/span><span style=\"color: #D4D4D4\">[4, 4, 3, 4]),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      (<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">json<\/span><span style=\"color: #D4D4D4\">[4, 3, 4, 3, 4, 3, 4]),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      (<\/span><span style=\"color: #B5CEA8\">3<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">json<\/span><span style=\"color: #D4D4D4\">[4, 4, 3, 3, 3, 3, 4, 3, 4, 4])<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">select<\/span><span style=\"color: #D4D4D4\"> d.emoji,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       j.seq <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> part,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       substr(d.emoji, j.seq, <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> e_char,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       <\/span><span style=\"color: #DCDCAA\">sum<\/span><span style=\"color: #D4D4D4\">(j.bytes) <\/span><span style=\"color: #569CD6\">over<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #569CD6\">partition<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">by<\/span><span style=\"color: #D4D4D4\"> d.seq <\/span><span style=\"color: #569CD6\">order by<\/span><span style=\"color: #D4D4D4\"> j.seq) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> e_char_len,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       substr(<\/span><span style=\"color: #569CD6\">dump<\/span><span style=\"color: #D4D4D4\">(substr(d.emoji, j.seq, <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">), <\/span><span style=\"color: #B5CEA8\">16<\/span><span style=\"color: #D4D4D4\">), <\/span><span style=\"color: #B5CEA8\">14<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> e_char_bytes<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">data<\/span><span style=\"color: #D4D4D4\"> d,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       json_table(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          d.bytes, <\/span><span style=\"color: #CE9178\">&#39;$[*]&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          columns (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             seq <\/span><span style=\"color: #569CD6\">for<\/span><span style=\"color: #D4D4D4\"> ordinality,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             bytes <\/span><span style=\"color: #569CD6\">number<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">path<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;$&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       ) j<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">order by<\/span><span style=\"color: #D4D4D4\"> d.seq, j.seq;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"EMOJI       PART E_CHAR E_CHAR_LEN E_CHAR_BYTES\n----- ---------- ------ ---------- ------------\n\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddb3             1 \ud83d\udc69              4 f0,9f,91,a9 \n\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddb3             2 \ud83c\udffe               8 f0,9f,8f,be \n\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddb3             3 \u200d               11 e2,80,8d    \n\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddb3             4 \ud83e\uddb3             15 f0,9f,a6,b3 \n\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66             1 \ud83d\udc68              4 f0,9f,91,a8 \n\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66             2 \u200d                7 e2,80,8d    \n\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66             3 \ud83d\udc69             11 f0,9f,91,a9 \n\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66             4 \u200d               14 e2,80,8d    \n\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66             5 \ud83d\udc67             18 f0,9f,91,a7 \n\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66             6 \u200d               21 e2,80,8d    \n\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66             7 \ud83d\udc66             25 f0,9f,91,a6 \n\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc             1 \ud83d\udc69              4 f0,9f,91,a9 \n\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc             2 \ud83c\udffc               8 f0,9f,8f,bc \n\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc             3 \u200d               11 e2,80,8d    \n\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc             4 \u2764              14 e2,9d,a4    \n\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc             5 \ufe0f               17 ef,b8,8f    \n\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc             6 \u200d               20 e2,80,8d    \n\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc             7 \ud83d\udc8b             24 f0,9f,92,8b \n\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc             8 \u200d               27 e2,80,8d    \n\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc             9 \ud83d\udc68             31 f0,9f,91,a8 \n\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc            10 \ud83c\udffc              35 f0,9f,8f,bc \n\n21 rows selected. \" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">EMOJI       PART E_CHAR E_CHAR_LEN E_CHAR_BYTES<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">----- ---------- ------ ---------- ------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddb3             1 \ud83d\udc69              4 f0,9f,91,a9 <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddb3             2 \ud83c\udffe               8 f0,9f,8f,be <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddb3             3 \u200d               11 e2,80,8d    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\ud83d\udc69\ud83c\udffe\u200d\ud83e\uddb3             4 \ud83e\uddb3             15 f0,9f,a6,b3 <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66             1 \ud83d\udc68              4 f0,9f,91,a8 <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66             2 \u200d                7 e2,80,8d    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66             3 \ud83d\udc69             11 f0,9f,91,a9 <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66             4 \u200d               14 e2,80,8d    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66             5 \ud83d\udc67             18 f0,9f,91,a7 <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66             6 \u200d               21 e2,80,8d    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66             7 \ud83d\udc66             25 f0,9f,91,a6 <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc             1 \ud83d\udc69              4 f0,9f,91,a9 <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc             2 \ud83c\udffc               8 f0,9f,8f,bc <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc             3 \u200d               11 e2,80,8d    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc             4 \u2764              14 e2,9d,a4    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc             5 \ufe0f               17 ef,b8,8f    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc             6 \u200d               20 e2,80,8d    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc             7 \ud83d\udc8b             24 f0,9f,92,8b <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc             8 \u200d               27 e2,80,8d    <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc             9 \ud83d\udc68             31 f0,9f,91,a8 <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc            10 \ud83c\udffc              35 f0,9f,8f,bc <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">21 rows selected. <\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Depending on your browser the result may or may not show the skin tone modifier emoji.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Theoretically, a grapheme can be built by an unlimited number of characters. As far as I know, 10 characters and 35 bytes for the kiss emoji \ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c\udffc  with two persons and a skin tone modifier are currently the maximum. This makes sizing a column with emojis a bit challenging.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Going for the maximum byte size is still a bad idea IMO. We would lose important information about our data. Even if the number of characters is not a perfect fit for a string containing emojis, it still gives the consumers an idea of how large a string can be. This helps when writing reports and similar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I reckon columns with emojis are still the exception in an Oracle Database. However, it is good to know that an emoji can take up to 35 times more bytes than a regular Latin character.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What Is a Byte? A byte is made up of 8 bits. And in the old days, it represented a character. If you use a single-byte character set such as WE8MSWIN1252, WE8ISO8859P15 or similar, it still is. What Is a Character? We can find definitions for example on Wikipedia and in the<span class=\"excerpt-hellip\"> [\u2026]<\/span><\/p>\n","protected":false},"author":1,"featured_media":13631,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[140,13,85],"class_list":["post-13579","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oracle","tag-oracle-26ai","tag-plsql","tag-sql"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How Many Bytes Are in an Emoji? - Philipp Salvisberg&#039;s Blog<\/title>\n<meta name=\"description\" content=\"We store strings in the database, so we should know exactly what the size of a string datatype means. Especially when using emojis.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.salvis.com\/blog\/2024\/09\/30\/how-many-bytes-are-in-an-emoji\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How Many Bytes Are in an Emoji? - Philipp Salvisberg&#039;s Blog\" \/>\n<meta property=\"og:description\" content=\"We store strings in the database, so we should know exactly what the size of a string datatype means. Especially when using emojis.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.salvis.com\/blog\/2024\/09\/30\/how-many-bytes-are-in-an-emoji\/\" \/>\n<meta property=\"og:site_name\" content=\"Philipp Salvisberg&#039;s Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-09-30T20:41:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-02T18:23:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2024\/09\/cartoon-style-kiss-emoji.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Philipp Salvisberg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@phsalvisberg\" \/>\n<meta name=\"twitter:site\" content=\"@phsalvisberg\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Philipp Salvisberg\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2024\\\/09\\\/30\\\/how-many-bytes-are-in-an-emoji\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2024\\\/09\\\/30\\\/how-many-bytes-are-in-an-emoji\\\/\"},\"author\":{\"name\":\"Philipp Salvisberg\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#\\\/schema\\\/person\\\/34352245c48678b1a5a05d4bc1339515\"},\"headline\":\"How Many Bytes Are in an Emoji?\",\"datePublished\":\"2024-09-30T20:41:21+00:00\",\"dateModified\":\"2024-10-02T18:23:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2024\\\/09\\\/30\\\/how-many-bytes-are-in-an-emoji\\\/\"},\"wordCount\":653,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#\\\/schema\\\/person\\\/34352245c48678b1a5a05d4bc1339515\"},\"image\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2024\\\/09\\\/30\\\/how-many-bytes-are-in-an-emoji\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/cartoon-style-kiss-emoji.webp\",\"keywords\":[\"Oracle 26ai\",\"PL\\\/SQL\",\"SQL\"],\"articleSection\":[\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2024\\\/09\\\/30\\\/how-many-bytes-are-in-an-emoji\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2024\\\/09\\\/30\\\/how-many-bytes-are-in-an-emoji\\\/\",\"url\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2024\\\/09\\\/30\\\/how-many-bytes-are-in-an-emoji\\\/\",\"name\":\"How Many Bytes Are in an Emoji? - Philipp Salvisberg&#039;s Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2024\\\/09\\\/30\\\/how-many-bytes-are-in-an-emoji\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2024\\\/09\\\/30\\\/how-many-bytes-are-in-an-emoji\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/cartoon-style-kiss-emoji.webp\",\"datePublished\":\"2024-09-30T20:41:21+00:00\",\"dateModified\":\"2024-10-02T18:23:52+00:00\",\"description\":\"We store strings in the database, so we should know exactly what the size of a string datatype means. Especially when using emojis.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2024\\\/09\\\/30\\\/how-many-bytes-are-in-an-emoji\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2024\\\/09\\\/30\\\/how-many-bytes-are-in-an-emoji\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2024\\\/09\\\/30\\\/how-many-bytes-are-in-an-emoji\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/cartoon-style-kiss-emoji.webp\",\"contentUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/cartoon-style-kiss-emoji.webp\",\"width\":1024,\"height\":1024,\"caption\":\"Cartoon-style kiss emoji\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2024\\\/09\\\/30\\\/how-many-bytes-are-in-an-emoji\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How Many Bytes Are in an Emoji?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/\",\"name\":\"Philipp Salvisberg&#039;s Blog\",\"description\":\"Database-centric development\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#\\\/schema\\\/person\\\/34352245c48678b1a5a05d4bc1339515\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#\\\/schema\\\/person\\\/34352245c48678b1a5a05d4bc1339515\",\"name\":\"Philipp Salvisberg\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/11\\\/phs_trivadis4.jpg\",\"url\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/11\\\/phs_trivadis4.jpg\",\"contentUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/11\\\/phs_trivadis4.jpg\",\"width\":400,\"height\":400,\"caption\":\"Philipp Salvisberg\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/11\\\/phs_trivadis4.jpg\"},\"sameAs\":[\"http:\\\/\\\/www.salvis.com\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How Many Bytes Are in an Emoji? - Philipp Salvisberg&#039;s Blog","description":"We store strings in the database, so we should know exactly what the size of a string datatype means. Especially when using emojis.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.salvis.com\/blog\/2024\/09\/30\/how-many-bytes-are-in-an-emoji\/","og_locale":"en_US","og_type":"article","og_title":"How Many Bytes Are in an Emoji? - Philipp Salvisberg&#039;s Blog","og_description":"We store strings in the database, so we should know exactly what the size of a string datatype means. Especially when using emojis.","og_url":"https:\/\/www.salvis.com\/blog\/2024\/09\/30\/how-many-bytes-are-in-an-emoji\/","og_site_name":"Philipp Salvisberg&#039;s Blog","article_published_time":"2024-09-30T20:41:21+00:00","article_modified_time":"2024-10-02T18:23:52+00:00","og_image":[{"width":1024,"height":1024,"url":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2024\/09\/cartoon-style-kiss-emoji.webp","type":"image\/webp"}],"author":"Philipp Salvisberg","twitter_card":"summary_large_image","twitter_creator":"@phsalvisberg","twitter_site":"@phsalvisberg","twitter_misc":{"Written by":"Philipp Salvisberg","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.salvis.com\/blog\/2024\/09\/30\/how-many-bytes-are-in-an-emoji\/#article","isPartOf":{"@id":"https:\/\/www.salvis.com\/blog\/2024\/09\/30\/how-many-bytes-are-in-an-emoji\/"},"author":{"name":"Philipp Salvisberg","@id":"https:\/\/www.salvis.com\/blog\/#\/schema\/person\/34352245c48678b1a5a05d4bc1339515"},"headline":"How Many Bytes Are in an Emoji?","datePublished":"2024-09-30T20:41:21+00:00","dateModified":"2024-10-02T18:23:52+00:00","mainEntityOfPage":{"@id":"https:\/\/www.salvis.com\/blog\/2024\/09\/30\/how-many-bytes-are-in-an-emoji\/"},"wordCount":653,"commentCount":4,"publisher":{"@id":"https:\/\/www.salvis.com\/blog\/#\/schema\/person\/34352245c48678b1a5a05d4bc1339515"},"image":{"@id":"https:\/\/www.salvis.com\/blog\/2024\/09\/30\/how-many-bytes-are-in-an-emoji\/#primaryimage"},"thumbnailUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2024\/09\/cartoon-style-kiss-emoji.webp","keywords":["Oracle 26ai","PL\/SQL","SQL"],"articleSection":["Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.salvis.com\/blog\/2024\/09\/30\/how-many-bytes-are-in-an-emoji\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.salvis.com\/blog\/2024\/09\/30\/how-many-bytes-are-in-an-emoji\/","url":"https:\/\/www.salvis.com\/blog\/2024\/09\/30\/how-many-bytes-are-in-an-emoji\/","name":"How Many Bytes Are in an Emoji? - Philipp Salvisberg&#039;s Blog","isPartOf":{"@id":"https:\/\/www.salvis.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.salvis.com\/blog\/2024\/09\/30\/how-many-bytes-are-in-an-emoji\/#primaryimage"},"image":{"@id":"https:\/\/www.salvis.com\/blog\/2024\/09\/30\/how-many-bytes-are-in-an-emoji\/#primaryimage"},"thumbnailUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2024\/09\/cartoon-style-kiss-emoji.webp","datePublished":"2024-09-30T20:41:21+00:00","dateModified":"2024-10-02T18:23:52+00:00","description":"We store strings in the database, so we should know exactly what the size of a string datatype means. Especially when using emojis.","breadcrumb":{"@id":"https:\/\/www.salvis.com\/blog\/2024\/09\/30\/how-many-bytes-are-in-an-emoji\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.salvis.com\/blog\/2024\/09\/30\/how-many-bytes-are-in-an-emoji\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.salvis.com\/blog\/2024\/09\/30\/how-many-bytes-are-in-an-emoji\/#primaryimage","url":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2024\/09\/cartoon-style-kiss-emoji.webp","contentUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2024\/09\/cartoon-style-kiss-emoji.webp","width":1024,"height":1024,"caption":"Cartoon-style kiss emoji"},{"@type":"BreadcrumbList","@id":"https:\/\/www.salvis.com\/blog\/2024\/09\/30\/how-many-bytes-are-in-an-emoji\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.salvis.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How Many Bytes Are in an Emoji?"}]},{"@type":"WebSite","@id":"https:\/\/www.salvis.com\/blog\/#website","url":"https:\/\/www.salvis.com\/blog\/","name":"Philipp Salvisberg&#039;s Blog","description":"Database-centric development","publisher":{"@id":"https:\/\/www.salvis.com\/blog\/#\/schema\/person\/34352245c48678b1a5a05d4bc1339515"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.salvis.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.salvis.com\/blog\/#\/schema\/person\/34352245c48678b1a5a05d4bc1339515","name":"Philipp Salvisberg","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2010\/11\/phs_trivadis4.jpg","url":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2010\/11\/phs_trivadis4.jpg","contentUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2010\/11\/phs_trivadis4.jpg","width":400,"height":400,"caption":"Philipp Salvisberg"},"logo":{"@id":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2010\/11\/phs_trivadis4.jpg"},"sameAs":["http:\/\/www.salvis.com\/"]}]}},"_links":{"self":[{"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/posts\/13579","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/comments?post=13579"}],"version-history":[{"count":54,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/posts\/13579\/revisions"}],"predecessor-version":[{"id":13634,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/posts\/13579\/revisions\/13634"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/media\/13631"}],"wp:attachment":[{"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/media?parent=13579"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/categories?post=13579"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/tags?post=13579"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}