diff --git a/build/gen-hanzi-data/radical-overrides.ts b/build/gen-hanzi-data/radical-overrides.ts
new file mode 100644
index 0000000000000000000000000000000000000000..7440d0121396b3c8f5549da35543b217b93300bb
--- /dev/null
+++ b/build/gen-hanzi-data/radical-overrides.ts
@@ -0,0 +1,6 @@
+/**
+ * Maps characters to a radical where data from cnchar is incorrect.
+ */
+export const radicalOverrides = new Map<string, string>()
+radicalOverrides.set("现", "⺩") // 王
+radicalOverrides.set("現", "⺩") // 王
diff --git a/build/gen-hanzi-data/radical.ts b/build/gen-hanzi-data/radical.ts
index baf1acc81e8a59fb04ddd7e0c4664974791115b6..85260a94eb08f770925b6c6ce7afa3870e154bed 100644
--- a/build/gen-hanzi-data/radical.ts
+++ b/build/gen-hanzi-data/radical.ts
@@ -4,6 +4,7 @@ import cncharRadical from 'cnchar-radical'
 import cncharTrad from 'cnchar-trad'
 import { isKangxiOrCjkRadical } from './blocks/index'
 import { queryPatchedHanziWriterData } from './patched-hanzi-writer'
+import { radicalOverrides } from './radical-overrides'
 
 cnchar.use(cncharOrder, cncharRadical, cncharTrad)
 
@@ -107,7 +108,11 @@ export function isInlineRadical (char: string): boolean {
 
 export async function queryRadicalInfo (char: string): Promise<RadicalInfo> {
   let radical: string
-  if (isInlineRadical(char)) {
+
+  const override = radicalOverrides.get(char)
+  if (override !== undefined) {
+    radical = override
+  } else if (isInlineRadical(char)) {
     // already a radical, the radical is the same char
     radical = char
   } else {