Skip to main content
Question

How to change Unicode text being used on form

  • April 9, 2026
  • 3 replies
  • 54 views

I currently have a sign-up form that collects both a name and email address. When the person signs up, I have an automation set up to send a confirmation email. I have a bizarre situation where one person somehow keeps submitting their name and email address in what I assume is unicode bold, sometimes courier, and sometimes in a type of cursive. 

Whenever this happens, the confirmation email fails. The person who signs up on this form is older, and has no idea what she’s doing. I am hoping to be able to somehow convert all the unicode fonts into something that is readable so it can send emails.

Some more context, the font also doesn’t get picked up if I do a Ctrl+F on the back end of the form. It’s as if the text isn’t there. If I copy and paste the text somewhere else online, it keeps the formatting, which makes me think it’s some kind of unicode that is still readable, but obviously not in this email situation. Can I fix this on the back end of AirTable so anytime she puts her “fonts” in a submission, it can automatically be saved as good ole regular plain text? Or is this just something I have to live with?

3 replies

coderkid
Forum|alt.badge.img+6
  • Inspiring
  • April 9, 2026

Here is a simple function to convert unicode bold and italic. Of course you can extend this map for cursive, monospace, etc… if it is needed.
 

function normalizeUnicode(text) {
if (!text) {
return "";
}
const map = {
// Bold A-Z
'𝐀':'A','𝐁':'B','𝐂':'C','𝐃':'D','𝐄':'E','𝐅':'F','𝐆':'G','𝐇':'H','𝐈':'I','𝐉':'J','𝐊':'K','𝐋':'L','𝐌':'M','𝐍':'N','𝐎':'O','𝐏':'P','𝐐':'Q','𝐑':'R','𝐒':'S','𝐓':'T','𝐔':'U','𝐕':'V','𝐖':'W','𝐗':'X','𝐘':'Y','𝐙':'Z',

// Bold a-z
'𝐚':'a','𝐛':'b','𝐜':'c','𝐝':'d','𝐞':'e','𝐟':'f','𝐠':'g','𝐡':'h','𝐢':'i','𝐣':'j','𝐤':'k','𝐥':'l','𝐦':'m','𝐧':'n','𝐨':'o','𝐩':'p','𝐪':'q','𝐫':'r','𝐬':'s','𝐭':'t','𝐮':'u','𝐯':'v','𝐰':'w','𝐱':'x','𝐲':'y','𝐳':'z',

// Italic A-Z
'𝐴':'A','𝐵':'B','𝐶':'C','𝐷':'D','𝐸':'E','𝐹':'F','𝐺':'G','𝐻':'H','𝐼':'I','𝐽':'J','𝐾':'K','𝐿':'L','𝑀':'M','𝑁':'N','𝑂':'O','𝑃':'P','𝑄':'Q','𝑅':'R','𝑆':'S','𝑇':'T','𝑈':'U','𝑉':'V','𝑊':'W','𝑋':'X','𝑌':'Y','𝑍':'Z',

// Italic a-z
'𝑎':'a','𝑏':'b','𝑐':'c','𝑑':'d','𝑒':'e','𝑓':'f','𝑔':'g','ℎ':'h','𝑖':'i','𝑗':'j','𝑘':'k','𝑙':'l','𝑚':'m','𝑛':'n','𝑜':'o','𝑝':'p','𝑞':'q','𝑟':'r','𝑠':'s','𝑡':'t','𝑢':'u','𝑣':'v','𝑤':'w','𝑥':'x','𝑦':'y','𝑧':'z'
};
return text.split('').map(c => map[c] || c).join('');
}

 


TheTimeSavingCo
Forum|alt.badge.img+32

Hm, may I know if you have ‘Validate email’ toggled on in the form?  If not, perhaps you could try that?

I just tried putting in 𝓐𝓭𝓪𝓶@gmail.com and 𝐀𝐝𝐚𝐦@gmail.com and that didn’t work, not sure what your values look like though!

Here’s a form you can try it out in if you’d like: https://airtable.com/appbnpG1E6iNqgGNz/pagWBa0XV5ao8OGGP/form


anmolgupta
Forum|alt.badge.img+4
  • Participating Frequently
  • April 10, 2026

Interesting problem!. Here is how you can solve this using automation and scripts.

Step 1: Create two more columns in your table to store cleaned name and cleaned email like below:

Step 2: Create an automation that triggers when a new record is created in the above table. This automation will clean the email and name, and put the cleaned name and cleaned email in your table.

Step 3: In the “Run a script” step of your automation, code will be as following. Make sure you provide “email” and “name” as inputs

console.log(`Hello, ${base.name}!`);

let inputConfig = input.config();
let uncleanedEmail = inputConfig.email;
let uncleanedName = inputConfig.name;

function stripFancyUnicode(str) {
const ranges = [
[0x1D400, 0x1D7FF], // Mathematical Alphanumeric Symbols (bold, italic, script, fraktur, etc.)
[0x1D100, 0x1D1FF], // Musical symbols (unlikely but safe to include)
];

// Map Unicode math block characters back to ASCII
return [...str].map(char => {
const cp = char.codePointAt(0);

// Mathematical bold/italic/script/fraktur capital letters
if (cp >= 0x1D400 && cp <= 0x1D7FF) {
// Bold capital A-Z
if (cp >= 0x1D400 && cp <= 0x1D419) return String.fromCharCode(65 + cp - 0x1D400);
// Bold lowercase a-z
if (cp >= 0x1D41A && cp <= 0x1D433) return String.fromCharCode(97 + cp - 0x1D41A);
// Italic capital
if (cp >= 0x1D434 && cp <= 0x1D44D) return String.fromCharCode(65 + cp - 0x1D434);
// Italic lowercase
if (cp >= 0x1D44E && cp <= 0x1D467) return String.fromCharCode(97 + cp - 0x1D44E);
// Bold italic capital
if (cp >= 0x1D468 && cp <= 0x1D481) return String.fromCharCode(65 + cp - 0x1D468);
// Bold italic lowercase
if (cp >= 0x1D482 && cp <= 0x1D49B) return String.fromCharCode(97 + cp - 0x1D482);
// Script capital
if (cp >= 0x1D49C && cp <= 0x1D4B5) return String.fromCharCode(65 + cp - 0x1D49C);
// Script lowercase
if (cp >= 0x1D4B6 && cp <= 0x1D4CF) return String.fromCharCode(97 + cp - 0x1D4B6);
// Bold script, Fraktur, Double-struck, etc. — approximate fallback
const offset = (cp - 0x1D400) % 52;
if (offset < 26) return String.fromCharCode(65 + offset);
return String.fromCharCode(97 + offset - 26);
}

// Fullwidth Latin (A-Z, a-z, 0-9)
if (cp >= 0xFF01 && cp <= 0xFF5E) return String.fromCharCode(cp - 0xFF01 + 0x21);

return char;
}).join('');
}


const cleanName = stripFancyUnicode(uncleanedEmail);
const cleanEmail = stripFancyUnicode(uncleanedName);

output.set("Cleaned Email",cleanEmail);
output.set("Cleaned Name",cleanName);

Step 4: Update the cleaned email and name in your Airtable record in the last step like below:

 

Once you run this automation, you will get output as below in your table (how you need it to be):

After this you can use cleaned name and email to send your emails!