
What is escape character in Java?
Mainly escape characters are the characters which replaces existing character with new & provided character which works best without throwing any error at runtime.
Also, it’s required in order for inter systems/process transmission, i.e. same char works for C++, Java, etc programming language.
In this tutorial we will go over two Escape Character Utilities.
- URLEscapeUtil
- JSONEscapeUtil
Also this tutorial will help you if you have below questions:
- Java escape characters in string
- Which characters need to be escaped on HTML
- What does escape char means in java
- Java escape characters in string
- How do I escape a String for Java?
- Escape Sequences in Java with Examples
Let’s get started:
- Create class CrunchifyEscapeCharUtility.java
- Create method crunchifyURLEscapeUtil(String s) – which returns String with escape character in provided URL
- Create method crunchifyJSONEscapeUtil(String s) – which returns String with escape character in provided JSON
- In Main() –
- we will read the JSON data from file
- provide file name is
Crunchify_Escape_Util.txt
- We use
java.net.URLEncoderto add URL escape char
In Java when we encode a String, the following rules apply:

Here is a Crunchify_Escape_Util.txt file content. Please put it into your laptop/desktop and update path location in program.
{
"founder": "App Shah",
"blogURL": "https://crunchify.com",
"twitter": "https://twitter.com/Crunchify",
"social": {
"facebook": "http://facebook.com/Crunchify",
"pinterest": "https://www.pinterest.com/Crunchify/crunchify-articles”,
"rss": "https://crunchify.com/feed/"
}
}
Option-1: Here is a complete Java Example.
- Create our own Escape JSON and URL methods.
package crunchify.com.tutorials;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.text.StringCharacterIterator;
/**
* @author Crunchify.com
* Version: 1.0
* Program: Escape Character Utility for URL and JSON data - Feel free to use in your Java Project.
*/
public class CrunchifyEscapeCharUtility {
public static void main(String[] args) {
// URL Escape Utility
String crunchifyURL = "https://crunchify.com/this is test";
crunchifyLog("Sample URL: " + crunchifyURL);
crunchifyLog("Escaped URL: " + crunchifyURLEscapeUtil(crunchifyURL));
// JSON Escape Utility
// We will read file first and then we will do escape char on that
StringBuilder jsonData = new StringBuilder();
BufferedReader crunchifyBufferReader = null;
try {
String crunchifyLine;
crunchifyBufferReader = new BufferedReader(
new FileReader("/Users/app/Downloads/Crunchify_Escape_Util.txt"));
while ((crunchifyLine = crunchifyBufferReader.readLine()) != null) {
jsonData.append(crunchifyLine).append("\n");
}
// IOException: Signals that an I/O exception of some sort has occurred.
// This class is the general class of exceptions produced by failed or interrupted I/O operations.
} catch (IOException exception) {
exception.printStackTrace();
} finally {
try {
if (crunchifyBufferReader != null)
crunchifyBufferReader.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
// Let's print raw JSON file data
crunchifyLog("\n Sample JSON: " + jsonData.toString().toString());
// Let's print data after escaping JSON strings
crunchifyLog("Escaped JSON: " + crunchifyJSONEscapeUtil(jsonData.toString().toString()));
}
// Used to ensure that HTTP query strings are in proper form, by escaping special characters such as spaces.
// Translates a string into application/x-www-form-urlencoded format using a specific encoding scheme
public static String crunchifyURLEscapeUtil(String crunchifyURL) {
String crunchifyNewURL;
// UTF_8: Eight-bit UCS Transformation Format.
crunchifyNewURL = URLEncoder.encode(crunchifyURL, StandardCharsets.UTF_8);
return crunchifyNewURL;
}
// JSON Escape Utility
public static String crunchifyJSONEscapeUtil(String crunchifyJSON) {
// StringBuilder(): Constructs a string builder with no characters in it and an initial capacity of 16 characters.
final StringBuilder crunchifyNewJSON = new StringBuilder();
// StringCharacterIterator class iterates over the entire String
StringCharacterIterator crunchifyIterator = new StringCharacterIterator(crunchifyJSON);
// current(): Implements CharacterIterator.current() for String.
char crunchifyChar = crunchifyIterator.current();
// DONE = \\uffff (not a character)
while (crunchifyChar != StringCharacterIterator.DONE) {
if (crunchifyChar == '\"') {
crunchifyNewJSON.append("\\\"");
} else if (crunchifyChar == '\t') {
crunchifyNewJSON.append("\\t");
} else if (crunchifyChar == '\f') {
crunchifyNewJSON.append("\\f");
} else if (crunchifyChar == '\n') {
crunchifyNewJSON.append("\\n");
} else if (crunchifyChar == '\r') {
crunchifyNewJSON.append("\\r");
} else if (crunchifyChar == '\\') {
crunchifyNewJSON.append("\\\\");
} else if (crunchifyChar == '/') {
crunchifyNewJSON.append("\\/");
} else if (crunchifyChar == '\b') {
crunchifyNewJSON.append("\\b");
} else {
// Nothing matched - just as text as it is.
// next(): Implements CharacterIterator.next() for String.
crunchifyNewJSON.append(crunchifyChar);
}
crunchifyChar = crunchifyIterator.next();
}
return crunchifyNewJSON.toString();
}
// Simple log utility
private static void crunchifyLog(String crunchifyData) {
System.out.println(crunchifyData);
}
}
Eclipse Console Output:
Sample URL: https://crunchify.com/this is test
Escaped URL: https%3A%2F%2Fcrunchify.com%2Fthis+is+test
Sample JSON: {
"founder": "App Shah",
"blogURL": "https://crunchify.com",
"twitter": "https://twitter.com/Crunchify",
"social": {
"facebook": "http://facebook.com/Crunchify",
"pinterest": "https://www.pinterest.com/Crunchify/crunchify-articles”,
"rss": "https://crunchify.com/feed/"
}
}
Escaped JSON: {\n \"founder\": \"App Shah\",\n \"blogURL\": \"https:\/\/crunchify.com\",\n
\"twitter\": \"https:\/\/twitter.com\/Crunchify\",\n \"social\": {\n \"facebook\":
\"http:\/\/facebook.com\/Crunchify\",\n \"pinterest\": \"https:\/\/www.pinterest.com\/Crunchify\/crunchify-articles”,
\n \"rss\": \"https:\/\/crunchify.com\/feed\/\"\n }\n}\n
Process finished with exit code 0
Option-2: Using Apache Common’s commons-text dependency
- Add Maven’s pom.xml dependency
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.9</version>
</dependency>
Complete code:
- Create class: CrunchifyEscapeJSONTutorial.java
package crunchify.com.java.tutorials;
import org.apache.commons.text.StringEscapeUtils;
/**
* @author Crunchify.com
* Program: In Java How to Escape JSON? Simple Tutorial using Apache Commons Library.
*/
public class CrunchifyEscapeJSONTutorial {
public static void main(String[] args) {
// StringEscapeUtils: Escapes and unescapes Strings for Java, Java Script, HTML and XML.
// #ThreadSafe#
// This code has been adapted from Apache Commons Lang 3.5.
String crunchifyHTML = "{\n" +
" \"founder\": \"App Shah\",\n" +
" \"blogURL\": \"https://crunchify.com\",\n" +
" \"twitter\": \"https://twitter.com/Crunchify\",\n" +
" \"social\": {\n" +
" \"facebook\": \"http://facebook.com/Crunchify\",\n" +
" \"pinterest\": \"https://www.pinterest.com/Crunchify/crunchify-articles”,\n" +
" \"rss\": \"https://crunchify.com/feed/\"\n" +
" }\n" +
"}";
// escapeJson: Escapes the characters in a String using Json String rules.
// Escapes any values it finds into their Json String form. Deals correctly with quotes and control-chars (tab, backslash, cr, ff, etc.)
// So a tab becomes the characters '\\' and 't'.
// The only difference between Java strings and Json strings is that in Json, forward-slash (/) is escaped.
String crunchifyResult = StringEscapeUtils.escapeJson(crunchifyHTML);
crunchifyPrintUtils(crunchifyResult);
}
private static void crunchifyPrintUtils(String crunchifyResult) {
System.out.println(crunchifyResult);
}
}
IntelliJ IDEA Result:
We moved over to IntelliJ IDEA since last two years. Here is a console result.
{\n \"founder\": \"App Shah\",\n \"blogURL\": \"https:\/\/crunchify.com\",\n \"twitter\": \"https:\/\/twitter.com\/Crunchify\",\n \"social\": {\n \"facebook\": \"http:\/\/facebook.com\/Crunchify\",\n \"pinterest\": \"https:\/\/www.pinterest.com\/Crunchify\/crunchify-articles\u201D,\n \"rss\": \"https:\/\/crunchify.com\/feed\/\"\n }\n}
Process finished with exit code 0
Let me know if you face any issue running this Java Application.
