Index: doc/options.txt
===================================================================
--- doc/options.txt	(revision 3741)
+++ doc/options.txt	(working copy)
@@ -309,10 +309,12 @@
 ;--copyright-file=file
 : 	Specify copyright messages from a file.
 Note that the first copyright message is not displayed on a device, but is 
-shown in BaseCamp. The copyright file must include at least two lines.
+shown in BaseCamp. The copyright file must include at least two lines and
+be UTF-8 encoded.
 <p>
 ;--license-file=file
-: 	Specify a file which content will be added as license. 
+: 	Specify a file which content will be added as license.
+The license file must be UTF-8 encoded.
 All entries of all maps will be merged in the overview map.
 <p>
 === Optimization options ===
Index: resources/help/en/options
===================================================================
--- resources/help/en/options	(revision 3741)
+++ resources/help/en/options	(working copy)
@@ -305,11 +305,13 @@
 
 --copyright-file=file
 	Specify copyright messages from a file.
-	Note that the first copyright message is not displayed on a device, but is 
-	shown in BaseCamp. The copyright file must include at least two lines.
+	Note that the first copyright message is not displayed on a device, but is
+	shown in BaseCamp. The copyright file must include at least two lines and
+	be UTF-8 encoded.
 
 --license-file=file
-	Specify a file which content will be added as license. 
+	Specify a file which content will be added as license.
+	The license file must be UTF-8 encoded.
 	All entries of all maps will be merged in the overview map.
 
 Optimization options:
Index: src/uk/me/parabola/mkgmap/build/MapBuilder.java
===================================================================
--- src/uk/me/parabola/mkgmap/build/MapBuilder.java	(revision 3741)
+++ src/uk/me/parabola/mkgmap/build/MapBuilder.java	(working copy)
@@ -13,11 +13,8 @@
 
 package uk.me.parabola.mkgmap.build;
 
-import java.io.BufferedReader;
 import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -825,25 +822,15 @@
 	 */
 	private void getMapInfo() {
 		if (licenseFileName != null) {
-			File file = new File(licenseFileName);
-
+			List<String> licenseArray = new ArrayList<>();
 			try {
-				BufferedReader reader = Files.newBufferedReader(file.toPath(), Charset.forName("utf-8"));
-				String text;
-
-				// repeat until all lines is read
-				while ((text = reader.readLine()) != null) {
-					if (!text.isEmpty()) {
-						mapInfo.add(text);
-					}
-				}
-
-				reader.close();
-			} catch (FileNotFoundException e) {
-				throw new ExitException("Could not open license file " + licenseFileName);
-			} catch (IOException e) {
-				throw new ExitException("Error reading license file " + licenseFileName);
+				File file = new File(licenseFileName);
+				licenseArray = Files.readAllLines(file.toPath(), StandardCharsets.UTF_8);
 			}
+			catch (Exception e) {
+				throw new ExitException("Error reading license file " + licenseFileName, e);
+			}
+			mapInfo.addAll(licenseArray);
 		} else {
 			mapInfo.add("Map data (c) OpenStreetMap and its contributors");
 			mapInfo.add("http://www.openstreetmap.org/copyright");
Index: src/uk/me/parabola/mkgmap/main/Main.java
===================================================================
--- src/uk/me/parabola/mkgmap/main/Main.java	(revision 3741)
+++ src/uk/me/parabola/mkgmap/main/Main.java	(working copy)
@@ -142,7 +142,13 @@
 			++numExitExceptions;
 		} catch (ExitException e) {
 			++numExitExceptions;
-			System.err.println(e.getMessage());
+			String message = e.getMessage();
+			Throwable cause = e.getCause();
+			while (cause != null) {
+				message += "\r\n" + cause.toString();
+				cause = cause.getCause();
+			}
+			System.err.println(message);
 		}
 		
 		System.out.println("Number of ExitExceptions: " + numExitExceptions);
Index: src/uk/me/parabola/mkgmap/reader/osm/OsmMapDataSource.java
===================================================================
--- src/uk/me/parabola/mkgmap/reader/osm/OsmMapDataSource.java	(revision 3741)
+++ src/uk/me/parabola/mkgmap/reader/osm/OsmMapDataSource.java	(working copy)
@@ -22,7 +22,7 @@
 import java.io.FileReader;
 import java.io.IOException;
 import java.io.InputStream;
-import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -145,19 +145,11 @@
 			List<String> copyrightArray = new ArrayList<>();
 			try {
 				File file = new File(copyrightFileName);
-				BufferedReader reader = Files.newBufferedReader(file.toPath(), Charset.forName("utf-8"));
-
-				String text;
-				while ((text = reader.readLine()) != null) {
-					copyrightArray.add(text);
-				}
-
-				reader.close();
-			} catch (FileNotFoundException e) {
-				throw new ExitException("Could not open copyright file " + copyrightFileName);
-			} catch (IOException e) {
-				throw new ExitException("Error reading copyright file " + copyrightFileName);
+				copyrightArray = Files.readAllLines(file.toPath(), StandardCharsets.UTF_8);
 			}
+			catch (Exception e) {
+				throw new ExitException("Error reading copyright file " + copyrightFileName, e);
+			}
 			String[] copyright = new String[copyrightArray.size()];
 			copyrightArray.toArray(copyright);
 			return copyright;
